www.digitalmars.com         C & C++   DMDScript  

c++ - incorrect name mangling

reply Darin Peshev <darp usa.net> writes:
I can not use Digital Mars because of small defect. Its name mangling
should be 100% compatible with Microsoft but there is diference in
mangling 'bool' type. Microsoft Visual Studio 6.0/7.0 (older versions
probably too) mangle 'bool' as '_N'
Digital Mars puts '_Y' when bool type is enabled with -Ab option. Can
this be corrected?
Best Regards,
Darin
PS is Digital Mars open source?
Jun 27 2001
parent reply Darin Peshev <darp usa.net> writes:
I'm trying to go away from m$ vc. But I stil have to use Micro$oft's
.dlls. Anyway I saw that you state on the Digital Mars web site that
digital mars follows microsoft specs for name mangling and I decided to
mention this bug. Compiler is certainly not compatible with VC 5.x
because _N is not new. (try TDUMP or something similar on MSVCP50.DLL)

-----Original Message-----
From: Jan Knepper [mailto:jan smartsoft.cc]
Sent: Wednesday, June 27, 2001 4:52 PM
To: Darin Peshev; Walter Bright
Subject: Re: incorrect name mangling


Darin,

Why does the name mangling have to be 100% compatible with M$ VC-- name
mangling for you?

Anyways, I think the compiler is compatible up to VC-- 5.x and not
anymore with 6.0 and later...

For other inquiries, please use the newsgroups at news.digitalmars.com

Thanks!
Jan


Darin Peshev wrote:

 I can not use Digital Mars because of small defect. Its name mangling
 should be 100% compatible with Microsoft but there is diference in
 mangling 'bool' type. Microsoft Visual Studio 6.0/7.0 (older versions
 probably too) mangle 'bool' as '_N'
 Digital Mars puts '_Y' when bool type is enabled with -Ab option. Can
 this be corrected?
 Best Regards,
 Darin
 PS is Digital Mars open source?

Jun 27 2001
parent reply Jan Knepper <jan smartsoft.cc> writes:
Which .M$ DLL's do you have to use?

Also... 'bool' was added later to the compiler. I guess at that time code
compatibility was not such a strong focus anymore. Anyways, the person to
talk about this should be Walter I guess.

Jan



Darin Peshev wrote:

 I'm trying to go away from m$ vc. But I stil have to use Micro$oft's
 .dlls. Anyway I saw that you state on the Digital Mars web site that
 digital mars follows microsoft specs for name mangling and I decided to
 mention this bug. Compiler is certainly not compatible with VC 5.x
 because _N is not new. (try TDUMP or something similar on MSVCP50.DLL)

 -----Original Message-----
 From: Jan Knepper [mailto:jan smartsoft.cc]
 Sent: Wednesday, June 27, 2001 4:52 PM
 To: Darin Peshev; Walter Bright
 Subject: Re: incorrect name mangling

 Darin,

 Why does the name mangling have to be 100% compatible with M$ VC-- name
 mangling for you?

 Anyways, I think the compiler is compatible up to VC-- 5.x and not
 anymore with 6.0 and later...

 For other inquiries, please use the newsgroups at news.digitalmars.com

 Thanks!
 Jan

 Darin Peshev wrote:

 I can not use Digital Mars because of small defect. Its name mangling
 should be 100% compatible with Microsoft but there is diference in
 mangling 'bool' type. Microsoft Visual Studio 6.0/7.0 (older versions
 probably too) mangle 'bool' as '_N'
 Digital Mars puts '_Y' when bool type is enabled with -Ab option. Can
 this be corrected?
 Best Regards,
 Darin
 PS is Digital Mars open source?


Jun 27 2001
parent reply "Walter" <walter digitalmars.com> writes:
I think I can get that fixed. The reason it is different is because we added
support for bool before Microsoft did. -Walter

Jan Knepper wrote in message <3B3A86FE.4B87CDC3 smartsoft.cc>...
Which .M$ DLL's do you have to use?

Also... 'bool' was added later to the compiler. I guess at that time code
compatibility was not such a strong focus anymore. Anyways, the person to
talk about this should be Walter I guess.

Jan



Darin Peshev wrote:

 I'm trying to go away from m$ vc. But I stil have to use Micro$oft's
 .dlls. Anyway I saw that you state on the Digital Mars web site that
 digital mars follows microsoft specs for name mangling and I decided to
 mention this bug. Compiler is certainly not compatible with VC 5.x
 because _N is not new. (try TDUMP or something similar on MSVCP50.DLL)

 -----Original Message-----
 From: Jan Knepper [mailto:jan smartsoft.cc]
 Sent: Wednesday, June 27, 2001 4:52 PM
 To: Darin Peshev; Walter Bright
 Subject: Re: incorrect name mangling

 Darin,

 Why does the name mangling have to be 100% compatible with M$ VC-- name
 mangling for you?

 Anyways, I think the compiler is compatible up to VC-- 5.x and not
 anymore with 6.0 and later...

 For other inquiries, please use the newsgroups at news.digitalmars.com

 Thanks!
 Jan

 Darin Peshev wrote:

 I can not use Digital Mars because of small defect. Its name mangling
 should be 100% compatible with Microsoft but there is diference in
 mangling 'bool' type. Microsoft Visual Studio 6.0/7.0 (older versions
 probably too) mangle 'bool' as '_N'
 Digital Mars puts '_Y' when bool type is enabled with -Ab option. Can
 this be corrected?
 Best Regards,
 Darin
 PS is Digital Mars open source?



Jun 27 2001
parent reply Darin Peshev <darp usa.net> writes:
Hi,
May be you know what QT is. If not go to www.trolltech.com. They have free
version of QT framework - free in sense that it can be used free for any open
source projects and for evaluation. Stupid thing in this case is that TrollTech
released only .libs and .dlls for Microsoft VC++ 6.0 compiler. DOes it make
sense to release free software can work with most comer$ial compiler?
I was able to run first few examples of the toolkit with Digital Mars and I got
excited because this is first decent combination of C++ compiler and fully
object oriented GUI (the best one if you ask me). Imagine creating applications
not using Win32 api or MFC. KDE on linux is so successful because of QT.
What you think about this? Is this a good reason to improve compatibility with
M$ VC?
Best Regards,
Darin


Walter wrote:

 I think I can get that fixed. The reason it is different is because we added
 support for bool before Microsoft did. -Walter

 Jan Knepper wrote in message <3B3A86FE.4B87CDC3 smartsoft.cc>...
Which .M$ DLL's do you have to use?

Also... 'bool' was added later to the compiler. I guess at that time code
compatibility was not such a strong focus anymore. Anyways, the person to
talk about this should be Walter I guess.

Jan



Darin Peshev wrote:

 I'm trying to go away from m$ vc. But I stil have to use Micro$oft's
 .dlls. Anyway I saw that you state on the Digital Mars web site that
 digital mars follows microsoft specs for name mangling and I decided to
 mention this bug. Compiler is certainly not compatible with VC 5.x
 because _N is not new. (try TDUMP or something similar on MSVCP50.DLL)

 -----Original Message-----
 From: Jan Knepper [mailto:jan smartsoft.cc]
 Sent: Wednesday, June 27, 2001 4:52 PM
 To: Darin Peshev; Walter Bright
 Subject: Re: incorrect name mangling

 Darin,

 Why does the name mangling have to be 100% compatible with M$ VC-- name
 mangling for you?

 Anyways, I think the compiler is compatible up to VC-- 5.x and not
 anymore with 6.0 and later...

 For other inquiries, please use the newsgroups at news.digitalmars.com

 Thanks!
 Jan

 Darin Peshev wrote:

 I can not use Digital Mars because of small defect. Its name mangling
 should be 100% compatible with Microsoft but there is diference in
 mangling 'bool' type. Microsoft Visual Studio 6.0/7.0 (older versions
 probably too) mangle 'bool' as '_N'
 Digital Mars puts '_Y' when bool type is enabled with -Ab option. Can
 this be corrected?
 Best Regards,
 Darin
 PS is Digital Mars open source?




Jun 28 2001
parent reply Jan Knepper <jan smartsoft.cc> writes:
Have you tried to run IMPLIB on the .DLL's to create new .LIB's?

Yes I have head about QT. Never visited http://www.trolltech.com/ though. I
think
the proper solution would be to get TrollTech to compile QT with Digital Mars
C++!
<g>

For now indeed it would help if you could use the M$ VC-- libraries.

Jan



Darin Peshev wrote:

 Hi,
 May be you know what QT is. If not go to www.trolltech.com. They have free
 version of QT framework - free in sense that it can be used free for any open
 source projects and for evaluation. Stupid thing in this case is that TrollTech
 released only .libs and .dlls for Microsoft VC++ 6.0 compiler. DOes it make
 sense to release free software can work with most comer$ial compiler?
 I was able to run first few examples of the toolkit with Digital Mars and I got
 excited because this is first decent combination of C++ compiler and fully
 object oriented GUI (the best one if you ask me). Imagine creating applications
 not using Win32 api or MFC. KDE on linux is so successful because of QT.
 What you think about this? Is this a good reason to improve compatibility with
 M$ VC?
 Best Regards,
 Darin

 Walter wrote:

 I think I can get that fixed. The reason it is different is because we added
 support for bool before Microsoft did. -Walter

 Jan Knepper wrote in message <3B3A86FE.4B87CDC3 smartsoft.cc>...
Which .M$ DLL's do you have to use?

Also... 'bool' was added later to the compiler. I guess at that time code
compatibility was not such a strong focus anymore. Anyways, the person to
talk about this should be Walter I guess.

Jan



Darin Peshev wrote:

 I'm trying to go away from m$ vc. But I stil have to use Micro$oft's
 .dlls. Anyway I saw that you state on the Digital Mars web site that
 digital mars follows microsoft specs for name mangling and I decided to
 mention this bug. Compiler is certainly not compatible with VC 5.x
 because _N is not new. (try TDUMP or something similar on MSVCP50.DLL)

 -----Original Message-----
 From: Jan Knepper [mailto:jan smartsoft.cc]
 Sent: Wednesday, June 27, 2001 4:52 PM
 To: Darin Peshev; Walter Bright
 Subject: Re: incorrect name mangling

 Darin,

 Why does the name mangling have to be 100% compatible with M$ VC-- name
 mangling for you?

 Anyways, I think the compiler is compatible up to VC-- 5.x and not
 anymore with 6.0 and later...

 For other inquiries, please use the newsgroups at news.digitalmars.com

 Thanks!
 Jan

 Darin Peshev wrote:

 I can not use Digital Mars because of small defect. Its name mangling
 should be 100% compatible with Microsoft but there is diference in
 mangling 'bool' type. Microsoft Visual Studio 6.0/7.0 (older versions
 probably too) mangle 'bool' as '_N'
 Digital Mars puts '_Y' when bool type is enabled with -Ab option. Can
 this be corrected?
 Best Regards,
 Darin
 PS is Digital Mars open source?


--



Jun 28 2001
parent reply Darin Peshev <darp usa.net> writes:
IMPLIB only generates .LIB from .DLL
There is no way to to change names exported though. To go around this name
mangling
problem one can use IMPDEF (this utility is from Borland - it is part of their
free
compiler package too) to generate .DEF file from .DLL. Resulting .DEF file can
be
edited with new function names (.DEF IMPORTS section specifies mapping between
function names as seen by user program and function cardinal numbers or  names
in
.DLL) and then by using IMPLIB new .LIB file can be generated - this time with
the
proper names.
May be you should consider to add something like IMPDEF to Digital Mars
distribution.
Something similar can be achieved by LIBUNRES.EXE  - it can print all publics -
but
there is no way to print out cardinal numbers. It would be a good idea to format
output of IMPDEF to be ready for IMPLIB. Ok, no more dreaming...
It will be nice if TrollTech releases libraries for Digital Mars but I doubt
that this
will happen. It is much easier to change Digital Mars than to change every
library
around to be compatible with DigitalMars. Don't you think so?

Jan Knepper wrote:

 Have you tried to run IMPLIB on the .DLL's to create new .LIB's?

 Yes I have head about QT. Never visited http://www.trolltech.com/ though. I
think
 the proper solution would be to get TrollTech to compile QT with Digital Mars
C++!
 <g>

 For now indeed it would help if you could use the M$ VC-- libraries.

 Jan

 Darin Peshev wrote:

 Hi,
 May be you know what QT is. If not go to www.trolltech.com. They have free
 version of QT framework - free in sense that it can be used free for any open
 source projects and for evaluation. Stupid thing in this case is that TrollTech
 released only .libs and .dlls for Microsoft VC++ 6.0 compiler. DOes it make
 sense to release free software can work with most comer$ial compiler?
 I was able to run first few examples of the toolkit with Digital Mars and I got
 excited because this is first decent combination of C++ compiler and fully
 object oriented GUI (the best one if you ask me). Imagine creating applications
 not using Win32 api or MFC. KDE on linux is so successful because of QT.
 What you think about this? Is this a good reason to improve compatibility with
 M$ VC?
 Best Regards,
 Darin

 Walter wrote:

 I think I can get that fixed. The reason it is different is because we added
 support for bool before Microsoft did. -Walter

 Jan Knepper wrote in message <3B3A86FE.4B87CDC3 smartsoft.cc>...
Which .M$ DLL's do you have to use?

Also... 'bool' was added later to the compiler. I guess at that time code
compatibility was not such a strong focus anymore. Anyways, the person to
talk about this should be Walter I guess.

Jan



Darin Peshev wrote:

 I'm trying to go away from m$ vc. But I stil have to use Micro$oft's
 .dlls. Anyway I saw that you state on the Digital Mars web site that
 digital mars follows microsoft specs for name mangling and I decided to
 mention this bug. Compiler is certainly not compatible with VC 5.x
 because _N is not new. (try TDUMP or something similar on MSVCP50.DLL)

 -----Original Message-----
 From: Jan Knepper [mailto:jan smartsoft.cc]
 Sent: Wednesday, June 27, 2001 4:52 PM
 To: Darin Peshev; Walter Bright
 Subject: Re: incorrect name mangling

 Darin,

 Why does the name mangling have to be 100% compatible with M$ VC-- name
 mangling for you?

 Anyways, I think the compiler is compatible up to VC-- 5.x and not
 anymore with 6.0 and later...

 For other inquiries, please use the newsgroups at news.digitalmars.com

 Thanks!
 Jan

 Darin Peshev wrote:

 I can not use Digital Mars because of small defect. Its name mangling
 should be 100% compatible with Microsoft but there is diference in
 mangling 'bool' type. Microsoft Visual Studio 6.0/7.0 (older versions
 probably too) mangle 'bool' as '_N'
 Digital Mars puts '_Y' when bool type is enabled with -Ab option. Can
 this be corrected?
 Best Regards,
 Darin
 PS is Digital Mars open source?


--




Jun 28 2001
parent Jan Knepper <jan smartsoft.cc> writes:
Darin Peshev wrote:

 It is much easier to change Digital Mars than to change every library around
to be
 compatible with DigitalMars. Don't you think so?

Don't know... The best thing still would be to compile the original source into .LIB/.DLL with the same compiler as the rest of the stuff is build when compiling C++ that is... Jan
Jun 28 2001