c++ - Module Definitions
- Default User (3/3) Sep 09 2007 Is there an automated way to create module definitions .def file froma
- Default User (16/16) Sep 09 2007 I'm using Digital Mars command-line C++ compiler.
- Walter Bright (1/1) Sep 10 2007 Are you trying to convert wsock32.lib from COFF to an OMF import library...
- Default User (12/13) Sep 13 2007 Hi Walter
- Bertel Brander (3/11) Sep 13 2007 But the import library for most windows dlls is included in DMC.
- Default User (9/10) Sep 13 2007 So what am I supposed to do? The wsock32.lib which is included by defaul...
- Bertel Brander (24/37) Sep 14 2007 Sorry, I still can't see the problem.
- Default User (21/38) Sep 15 2007 I'm sorry, I got confused in my last post. Your program indeed compiles.
- Walter Bright (3/5) Sep 13 2007 If you mean convert COFF to OMF, you can use \dm\bin\coffimplib.exe
- Walter Bright (4/9) Sep 14 2007 I mistyped. To create an OMF import library from a COFF import library,
- Default User (14/19) Sep 15 2007 Thanks Walter,
- Walter Bright (10/34) Sep 16 2007 Sounds like you tried running it on a DLL. It's designed to be run on a
- Default User (10/15) Sep 16 2007 So my only solution is to install SDK?
- Andy C (83/83) Sep 17 2007 If I use Jan Kneper's version of implib (which I remamed implib_jk)
- Default User (3/3) Sep 17 2007 Sorry Walter, forget everyhting I've said. I didn't realize you were the
- Andy C (6/6) Sep 18 2007 As I posted in the windows.32-bit forum, all you need is the DLL
- Walter Bright (8/16) Sep 17 2007 Because in the DLL will be a name like:
- Bob Paddock (72/82) Sep 21 2007 =
- Walter Bright (3/46) Sep 21 2007 That likely means that your import library, wsc32dm.lib, does not
- AndyC (10/10) Sep 24 2007 I posted how I used Jan Knepper's version of Implib.exe to imp-
- Bob Paddock (177/187) Sep 24 2007 Did that. Installed in G:\DM\bin. Renamed implib.ini
- Bob Paddock (61/247) Sep 26 2007 Can someone post a working .DEF file please?
- Walter Bright (3/6) Sep 27 2007 All linker error messages have more or less helpful explanations at:
- Bob Paddock (4/10) Sep 28 2007 I had already looked there before I posted the question.
- Walter Bright (2/15) Sep 28 2007 I agree.
- Walter Bright (13/13) Sep 27 2007 You have a fairly complex project with a lot of files, and not enough of...
- Bob Paddock (7/10) Sep 28 2007 Actually I gave up on building the sample at all, went
- Walter Bright (4/16) Sep 28 2007 Most apps won't need a .def file. You'll need them when creating a dll,
- Bob Paddock (93/100) Oct 03 2007 With new wsc.dll problem is back, and now its in my
- Walter Bright (4/5) Oct 10 2007 Try reversing the order of the exports, i.e.:
- Bob Paddock (41/46) Oct 10 2007 That gets me:
- Walter Bright (7/13) Oct 10 2007 Those "goofball numbers" are the Microsoft-defined standard windows
- Bob Paddock (8/11) Oct 10 2007 I created wsc32.lib using implib(_jk) from the wsc32.dll I was supplied.
- AndyC (17/17) Oct 22 2007 I looked at the header files (wsc.h) and this MC declspec garbage.
- Walter Bright (3/4) Oct 10 2007 It can really help to cut your project down. I suggest cutting it down
- Bob Paddock (12/16) Oct 10 2007 All I'm doing is replacing wsc32.dll/wsc32.lib version 4.2 with
- Walter Bright (5/18) Oct 11 2007 Then I suggest running lib over wsc32.lib and wsc32_42.lib to create
- Bob Paddock (34/47) Nov 13 2007 I've really *REALLY* learned to hate this crap. I was happily
Is there an automated way to create module definitions .def file froma dll? --
Sep 09 2007
I'm using Digital Mars command-line C++ compiler. I have to use module definition files as described in FAQ to translate function names: LIBRARY wsock32 EXETYPE NT SUBSYSTEM WINDOWS EXPORTS _gethostbyname 4 = gethostbyname That's the only was I can get DM to work, otherwise it spits out a bunch of "Symbol Undefined" errors. But as you can imagine there are hundreds of funtions that have to be translated via module definition files. I looked all over the website, but it doesn't describe an automated way to do this anywhere... Any advise? --
Sep 09 2007
Are you trying to convert wsock32.lib from COFF to an OMF import library?
Sep 10 2007
On Mon, 10 Sep 2007 11:01:57 -0700, Walter Bright wrote:Are you trying to convert wsock32.lib from COFF to an OMF import library?Hi Walter I'm trying to do what's described here: http://www.digitalmars.com/faq.html#sysimport I tried researching COFF vs OMF issue after reading your reply, but I don't quite understand it. Do you think that this trick with module definition file (as described in the above URL) actually performs OMF to COFF conversion? If that is the case, why wouldn't they just say so?! That entire paragraph doesn't even mention COFF or OMF... Do you think I can use some sort of OMF to COFF conversion utility instead of entering everything manually into Module Definition file?
Sep 13 2007
Default User skrev:On Mon, 10 Sep 2007 11:01:57 -0700, Walter Bright wrote:But the import library for most windows dlls is included in DMC. You don't normally need to create the libraries yourself.Are you trying to convert wsock32.lib from COFF to an OMF import library?Hi Walter I'm trying to do what's described here: http://www.digitalmars.com/faq.html#sysimport
Sep 13 2007
On Thu, 13 Sep 2007 23:56:39 +0200, Bertel Brander wrote:You don't normally need to create the libraries yourself.So what am I supposed to do? The wsock32.lib which is included by default cannot be used because of its format. Read the URL reference that I gave carefully. All the functions need to be changed from one format to another. If I try to compile without module definitions file, the linker gives out a bunch of "undefined symbol" errors. I also think I should not be creating all those libraries myself. Especially manually. So what should I do then? It DOES NOT work with the libraries the way they're supplied.
Sep 13 2007
Default User skrev:On Thu, 13 Sep 2007 23:56:39 +0200, Bertel Brander wrote:Sorry, I still can't see the problem. If I create a program: #include <windows.h> #include <stdio.h> int main() { WSADATA wsaData; WSAStartup(MAKEWORD(1, 1), &wsaData); struct hostent *h = gethostbyname("www.digitalmars.com"); if(h) printf("%u.%u.%u.%u\n", (unsigned char )h->h_addr_list[0][0], (unsigned char )h->h_addr_list[0][1], (unsigned char )h->h_addr_list[0][2], (unsigned char )h->h_addr_list[0][3]); else printf("To bad\n"); } And compile it with: dmc testing.cpp wsock32.lib It works rigth away, without any tricks or defintion files. The wsock32.lib file is the one supplied by Digital Mars. So why do you say it does not work? What happens if you try to compile the above program?You don't normally need to create the libraries yourself.So what am I supposed to do? The wsock32.lib which is included by default cannot be used because of its format. Read the URL reference that I gave carefully. All the functions need to be changed from one format to another. If I try to compile without module definitions file, the linker gives out a bunch of "undefined symbol" errors. I also think I should not be creating all those libraries myself. Especially manually. So what should I do then? It DOES NOT work with the libraries the way they're supplied.
Sep 14 2007
On Fri, 14 Sep 2007 21:01:45 +0200, Bertel Brander wrote:Sorry, I still can't see the problem. If I create a program: And compile it with: dmc testing.cpp wsock32.lib It works rigth away, without any tricks or defintion files. The wsock32.lib file is the one supplied by Digital Mars. So why do you say it does not work? What happens if you try to compile the above program?I'm sorry, I got confused in my last post. Your program indeed compiles. Also the example in that FAQ I quoted is misleading because wsock32.lib is supplied by DM and one does not need to translate wsock32 functions. Here is detailed explanation of what's happening in my case: Lets say I have c++ program test.cpp which uses WSAConnect function. WSAConnect is in ws2_32.dll I do: implib /s ws2_32.lib ws2_32.dll dmc test.cpp ws2_32.lib I get error: Error 42: Symbol Undefined _WSAConnect 28 So I need to create module definition file "ws2_32.def":LIBRARY wsock32 EXETYPE NT SUBSYSTEM WINDOWS EXPORTS _WSAConnect 28 = WSAConnectThen I do: implib ws2_32.lib ws2_32.def dmc test.cpp ws2_32.lib Now the code compiles. But what if the code contains hundreds of functions (like WSAConnect in the above example) which are not present in those 18 lib files supplied by DM? Am I supposed to create these module definition files manually by copy and paste even if there are hundreds of funtions?
Sep 15 2007
Default User wrote:Do you think I can use some sort of OMF to COFF conversion utility instead of entering everything manually into Module Definition file?If you mean convert COFF to OMF, you can use \dm\bin\coffimplib.exe which comes with the extended utility package.
Sep 13 2007
Default User wrote:On Thu, 13 Sep 2007 23:11:39 -0700, Walter Bright wrote:I mistyped. To create an OMF import library from a COFF import library, you can use coffimplib.exe. From reading your posts, that appears to be what you need.If you mean convert COFF to OMF, you can use \dm\bin\coffimplib.exe which comes with the extended utility package.You are either unable or unwilling to understand what my question is.
Sep 14 2007
On Fri, 14 Sep 2007 15:03:35 -0700, Walter Bright wrote:I mistyped. To create an OMF import library from a COFF import library, you can use coffimplib.exe. From reading your posts, that appears to be what you need.Thanks Walter, I tried coffimplib and it always says: Error: missing archive signature I read that it only works with microsoft import libraries (Are these the .lib files that would normally come with Microsoft Visual Studio?). But I only have dlls that normally come with Windows and whatever files came with dmc; I do not have those microsoft lib files. Is there a way to get them without MS Visual Studio? I would like dmc to be able to use functions from any windows dlls, without spending hours manually creating module definition files for hundreds of functions. I've described my problem in detail in this message: Message-ID: <fch3dt$kb1$1 digitalmars.com> Thanks a lot for all your help.
Sep 15 2007
Default User wrote:On Fri, 14 Sep 2007 15:03:35 -0700, Walter Bright wrote:Sounds like you tried running it on a DLL. It's designed to be run on a .LIB file in COFF format. A DLL is not a library.I mistyped. To create an OMF import library from a COFF import library, you can use coffimplib.exe. From reading your posts, that appears to be what you need.Thanks Walter, I tried coffimplib and it always says: Error: missing archive signatureI read that it only works with microsoft import libraries (Are these the .lib files that would normally come with Microsoft Visual Studio?).They come with the Microsoft Windows SDK as well as VS.But I only have dlls that normally come with Windows and whatever files came with dmc; I do not have those microsoft lib files. Is there a way to get them without MS Visual Studio?I think the SDK is a free download from MS.I would like dmc to be able to use functions from any windows dlls, without spending hours manually creating module definition files for hundreds of functions. I've described my problem in detail in this message: Message-ID: <fch3dt$kb1$1 digitalmars.com> Thanks a lot for all your help.The problem is Microsoft stripped information from the dlls, so an import library cannot be automatically generated from them. What they stripped are the 'mangled' names. There is no way for a program to insert the missing mangling text, as it is different for every function signature.
Sep 16 2007
On Sun, 16 Sep 2007 18:04:27 -0700, Walter Bright wrote:The problem is Microsoft stripped information from the dlls, so an import library cannot be automatically generated from them. What they stripped are the 'mangled' names. There is no way for a program to insert the missing mangling text, as it is different for every function signature.So my only solution is to install SDK? Couldn't DigitalMars just make more .lib files (to cover all Windows dll's, rather than just 18 supplied with DM)? If Digital Mars managed to create those 18, why cannot they create more, instead of having every user install SDK! I'm sure most users sooner or later need a function which is not included in those 18 libraries. Also one can circumvent the problem manually using module definition files, without having any extra info or knowing mangling text (as described in the URL I quoted). Why cannot the same process be done automatically?
Sep 16 2007
If I use Jan Kneper's version of implib (which I remamed implib_jk) as follows and ask it to make an import lib file called wsock32_dm.lib from wsock32.dll using the following command: implib_jk /system /v /suffix /def /test /Ic:\dm\include\win32 wsock32_dm.lib wsock32.dll I get wsock32_dm.lib to link with my program and and the following output wsock32_dm.def: EXPORTS _AcceptEx 32 = AcceptEx _EnumProtocolsA 12 = EnumProtocolsA _EnumProtocolsW 12 = EnumProtocolsW _GetAcceptExSockaddrs 32 = GetAcceptExSockaddrs _GetAddressByNameA 40 = GetAddressByNameA _GetAddressByNameW 40 = GetAddressByNameW _GetNameByTypeA 12 = GetNameByTypeA _GetNameByTypeW 12 = GetNameByTypeW _GetServiceA 28 = GetServiceA _GetServiceW 28 = GetServiceW _GetTypeByNameA 8 = GetTypeByNameA _GetTypeByNameW 8 = GetTypeByNameW _MigrateWinsockConfiguration = MigrateWinsockConfiguration _NPLoadNameSpaces = NPLoadNameSpaces _SetServiceA 24 = SetServiceA _SetServiceW 24 = SetServiceW _TransmitFile 28 = TransmitFile _WEP = WEP _WSAAsyncGetHostByAddr 28 = WSAAsyncGetHostByAddr _WSAAsyncGetHostByName 20 = WSAAsyncGetHostByName _WSAAsyncGetProtoByName 20 = WSAAsyncGetProtoByName _WSAAsyncGetProtoByNumber 20 = WSAAsyncGetProtoByNumber _WSAAsyncGetServByName 24 = WSAAsyncGetServByName _WSAAsyncGetServByPort 24 = WSAAsyncGetServByPort _WSAAsyncSelect 16 = WSAAsyncSelect _WSACancelAsyncRequest 4 = WSACancelAsyncRequest _WSACancelBlockingCall 0 = WSACancelBlockingCall _WSACleanup 0 = WSACleanup _WSAGetLastError 0 = WSAGetLastError _WSAIsBlocking 0 = WSAIsBlocking _WSARecvEx 16 = WSARecvEx _WSASetBlockingHook 4 = WSASetBlockingHook _WSASetLastError 4 = WSASetLastError _WSAStartup 8 = WSAStartup _WSAUnhookBlockingHook 0 = WSAUnhookBlockingHook _WSApSetPostRoutine = WSApSetPostRoutine ___WSAFDIsSet 8 = __WSAFDIsSet _accept 12 = accept _bind 12 = bind _closesocket 4 = closesocket _connect 12 = connect _dn_expand = dn_expand _gethostbyaddr 12 = gethostbyaddr _gethostbyname 4 = gethostbyname _gethostname 8 = gethostname _getnetbyname = getnetbyname _getpeername 12 = getpeername _getprotobyname 4 = getprotobyname _getprotobynumber 4 = getprotobynumber _getservbyname 8 = getservbyname _getservbyport 8 = getservbyport _getsockname 12 = getsockname _getsockopt 20 = getsockopt _htonl 4 = htonl _htons 4 = htons _inet_addr 4 = inet_addr _inet_network = inet_network _inet_ntoa 4 = inet_ntoa _ioctlsocket 12 = ioctlsocket _listen 8 = listen _ntohl 4 = ntohl _ntohs 4 = ntohs _rcmd = rcmd _recv 16 = recv _recvfrom 24 = recvfrom _rexec = rexec _rresvport = rresvport _s_perror = s_perror _select 20 = select _send 16 = send _sendto 24 = sendto _sethostname = sethostname _setsockopt 20 = setsockopt _shutdown 8 = shutdown _socket 12 = socket
Sep 17 2007
Sorry Walter, forget everyhting I've said. I didn't realize you were the developer. Thanks for everybody's help, I've moved on to another compiler.
Sep 17 2007
As I posted in the windows.32-bit forum, all you need is the DLL and the header file and you are good to go. I downloaded the Windows platform SDK and started using GDI++ functions (I needed .PNG output) by using JK's version of Implib. I recommend people take a look at the new MSSDK, there are a bunch of usefull new functions and using it under DM is pretty easy.
Sep 18 2007
Default User wrote:Couldn't DigitalMars just make more .lib files (to cover all Windows dll's, rather than just 18 supplied with DM)? If Digital Mars managed to create those 18, why cannot they create more, instead of having every user install SDK! I'm sure most users sooner or later need a function which is not included in those 18 libraries.Microsoft changes those libraries constantly.Also one can circumvent the problem manually using module definition files, without having any extra info or knowing mangling text (as described in the URL I quoted). Why cannot the same process be done automatically?Because in the DLL will be a name like: AbcDef Yet the mangled name would be something like: AbcDef 8 How, by looking at the DLL, can the tool automatically guess the 8? or 4? or 16?
Sep 17 2007
On Mon, 17 Sep 2007 23:46:59 -0400, Walter Bright = <newshound1 digitalmars.com> wrote:=Also one can circumvent the problem manually using module definition =files, without having any extra info or knowing mangling text (as =described in the URL I quoted). Why cannot the same process be done =r =automatically?Because in the DLL will be a name like: AbcDef Yet the mangled name would be something like: AbcDef 8 How, by looking at the DLL, can the tool automatically guess the 8? o=4? or 16?While this thread ended rather rudely by Default User, it is timely for me, as I'm having a similar problem. I'm trying to use the Marshall Soft Windows Serial Communication Component Library (WSC4C) http://www.marshallsoft.com/ Free download for the evaluation version if anyone wants to share the pain. Following the various tips in this thread I've created this .DEF file: EXPORTS _SioBaud 8 =3D SioBaud _SioCTS 4 =3D SioCTS _SioDone 4 =3D SioDone _SioFlow 8 =3D SioFlow _SioGets 12 =3D SioGets _SioInfo 4 =3D SioInfo _SioKeyCode 4 =3D SioKeyCode _SioPutc 8 =3D SioPutc _SioReset 12 =3D SioReset _SioRxClear 4 =3D SioRxClear Yet I still get link errors: link simple.rsp,simple,simple,wsc32dm.lib,wsc32dm.def,simple.res OPTLINK (R) for Win32 Release 7.50B1 Copyright (C) Digital Mars 1989 - 2001 All Rights Reserved OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioBaud OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioCTS OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioDone OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioFlow OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioGets OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioInfo OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioKeyCode OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioPutc OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioReset OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioRxClear OPTLINK : Error 129: WeakLazyAlias Internal : SioDone --- errorlevel 11 This is the Makefile I created to build the WSC 'simple' example, converted from a BCC55 Makefile. = line feed. CCFLAGS =3D -c -DWIN32 simple.exe: simple.res simple.obj wsc32dm.def wsc32dm.lib about.obj = line.obj paint.obj sioerror.obj link simple.rsp,simple,simple,wsc32dm.lib,wsc32dm.def,simple.res about.obj: about.c about.h dmc $(CCFLAGS) about.c simple.obj: simple.c simple.h wsc.h dmc $(CCFLAGS) simple.c sioerror.obj: sioerror.c sioerror.h wsc.h dmc $(CCFLAGS) sioerror.c paint.obj: paint.c paint.h dmc $(CCFLAGS) paint.c line.obj: line.c line.h wsc.h dmc $(CCFLAGS) line.c simple.res: simple.rc rcc -dWIN32 -D__NT__ simple.rc wsc32dm.lib: implib_jk /system /v /suffix /def /test /IG:\DM\include\win32 wsc32dm.l= ib = wsc32.dll
Sep 21 2007
Bob Paddock wrote:While this thread ended rather rudely by Default User, it is timely for me, as I'm having a similar problem. I'm trying to use the Marshall Soft Windows Serial Communication Component Library (WSC4C) http://www.marshallsoft.com/ Free download for the evaluation version if anyone wants to share the pain. Following the various tips in this thread I've created this .DEF file: EXPORTS _SioBaud 8 = SioBaud _SioCTS 4 = SioCTS _SioDone 4 = SioDone _SioFlow 8 = SioFlow _SioGets 12 = SioGets _SioInfo 4 = SioInfo _SioKeyCode 4 = SioKeyCode _SioPutc 8 = SioPutc _SioReset 12 = SioReset _SioRxClear 4 = SioRxClear Yet I still get link errors: link simple.rsp,simple,simple,wsc32dm.lib,wsc32dm.def,simple.res OPTLINK (R) for Win32 Release 7.50B1 Copyright (C) Digital Mars 1989 - 2001 All Rights Reserved OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioBaud OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioCTS OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioDone OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioFlow OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioGets OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioInfo OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioKeyCode OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioPutc OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioReset OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioRxClear OPTLINK : Error 129: WeakLazyAlias Internal : SioDone --- errorlevel 11That likely means that your import library, wsc32dm.lib, does not contain those names. I'd check it with a file dumper.
Sep 21 2007
I posted how I used Jan Knepper's version of Implib.exe to imp- lement the latest GDI+ from the MSSDK over at 'c++.windows.32- bits'. It will probably work for you as well. Get the program at http://www.digitalmars.com/~jan/ Create an import lib using the program as follows: implib_jk /system /v /suffix /def /test /I. ***.lib ***.dll Be sure you provide the path to all the header files. The resulting ***.lib can then be linked into your project. A files titled "***.cpp" was also created, may be useful.
Sep 24 2007
On Mon, 24 Sep 2007 09:48:55 -0400, AndyC <asmith yahoo.com> wrote:I posted how I used Jan Knepper's version of Implib.exe to imp- lement the latest GDI+ from the MSSDK over at 'c++.windows.32- bits'. It will probably work for you as well. Get the program at http://www.digitalmars.com/~jan/Did that. Installed in G:\DM\bin. Renamed implib.ini to implib_jk.ini and fixed the path to SPPN therein.Create an import lib using the program as follows: implib_jk /system /v /suffix /def /test /I. ***.lib ***.dllDid that.Be sure you provide the path to all the header files.There is only wsc.h, which is in the same directory as the wsc32.dll file, so /I. is fine.The resulting ***.lib can then be linked into your project.Still doesn't work. I spent the morning starting over with my Digital Mars 8.25 CD, and going through the tedious upgrading to 8.50. I'm wondering if I broke something else because now I have more errors (below) than I had on Friday. Got the same .DEF file as Friday: EXPORTS _SioBaud 8 =3D SioBaud _SioBrkSig 8 =3D SioBrkSig _SioCTS 4 =3D SioCTS _SioDCD 4 =3D SioDCD ... To answer Walters earlier comment about doing a hex dump of the .lib file: 00000000: F0 0D 00 00 0A 00 00 05 00 00 00 00 00 00 00 00 p............= ... 00000010: 80 0C 00 0A 5F 53 69 6F 42 61 75 64 40 38 00 88 ...._SioBaud = 8.. 00000020: 22 00 00 A0 01 00 0A 5F 53 69 6F 42 61 75 64 40 ".. ..._SioBa= ud 00000030: 38 09 77 73 63 33 32 2E 64 6C 6C 07 53 69 6F 42 8.wsc32.dll.S= ioB 00000040: 61 75 64 00 8A 02 00 00 00 00 00 00 00 00 00 00 aud..........= ... 00000050: 80 0E 00 0C 5F 53 69 6F 42 72 6B 53 69 67 40 38 ...._SioBrkSi= g 8 00000060: 00 88 26 00 00 A0 01 00 0C 5F 53 69 6F 42 72 6B ..&.. ..._Sio= Brk 00000070: 53 69 67 40 38 09 77 73 63 33 32 2E 64 6C 6C 09 Sig 8.wsc32.d= ll. 00000080: 53 69 6F 42 72 6B 53 69 67 00 8A 02 00 00 00 00 SioBrkSig....= ... 00000090: 80 0B 00 09 5F 53 69 6F 43 54 53 40 34 00 88 20 ...._SioCTS 4= .. 000000A0: 00 00 A0 01 00 09 5F 53 69 6F 43 54 53 40 34 09 .. ..._SioCTS= 4. 000000B0: 77 73 63 33 32 2E 64 6C 6C 06 53 69 6F 43 54 53 wsc32.dll.Sio= CTS ...A files titled "***.cpp" was also created, may be useful.#include <windows.h> int main ( int, char **, char ** ) { SioBaud ( ( int ) 0, ( unsigned ) 0 ); SioBrkSig ( ( int ) 0, ( char ) 0 ); SioCTS ( ( int ) 0 ); ... } link simple.rsp,simple,simple,wsc32dm.lib,wsc32dm.def,simple.res OPTLINK (R) for Win32 Release 8.00.1 Copyright (C) Digital Mars 1989-2004 All rights reserved. OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioBaud OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioBrkSig OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioCTS OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioDCD OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioDSR OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioDTR OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioDebug OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioDone OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioEvent OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioEventChar OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioEventWait OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioFlow OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioGetReg OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioGetc OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioGets OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioInfo OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioKeyCode OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioMessage OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioParms OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioPutc OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioPuts OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioRI OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioRTS OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioRead OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioReset OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioRxClear OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioRxQue OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioSetInteger OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioStatus OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioTimer OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioTxClear OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioTxQue OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioUnGetc OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioWinError simple.obj(simple) Error 42: Symbol Undefined _SelectObject 8 simple.obj(simple) Error 42: Symbol Undefined _GetStockObject 4 simple.obj(simple) Error 42: Symbol Undefined _SetMapMode 8 paint.obj(paint) Error 42: Symbol Undefined _ExtTextOutA 32 paint.obj(paint) Error 42: Symbol Undefined _SetBkMode 8 paint.obj(paint) Error 42: Symbol Undefined _CreateSolidBrush 4 paint.obj(paint) Error 42: Symbol Undefined _GetTextMetricsA 8 OPTLINK : Warning 148: USE16/USE32 Mismatch : DGROUP G:\DM\bin\..\lib\SNN.lib(winstart) Error 83: Illegal frame on start address OPTLINK : Warning 174: 32-bit Segments Inappropriate for 16-bit Segmente= d = output OPTLINK : Error 81: Cannot EXPORT : SioBaud OPTLINK : Error 81: Cannot EXPORT : SioBrkSig OPTLINK : Error 81: Cannot EXPORT : SioCTS OPTLINK : Error 81: Cannot EXPORT : SioDCD OPTLINK : Error 81: Cannot EXPORT : SioDSR OPTLINK : Error 81: Cannot EXPORT : SioDTR OPTLINK : Error 81: Cannot EXPORT : SioDebug OPTLINK : Error 81: Cannot EXPORT : SioDone OPTLINK : Error 81: Cannot EXPORT : SioEvent OPTLINK : Error 81: Cannot EXPORT : SioEventChar OPTLINK : Error 81: Cannot EXPORT : SioEventWait OPTLINK : Error 81: Cannot EXPORT : SioFlow OPTLINK : Error 81: Cannot EXPORT : SioGetReg OPTLINK : Error 81: Cannot EXPORT : SioGetc OPTLINK : Error 81: Cannot EXPORT : SioGets OPTLINK : Error 81: Cannot EXPORT : SioInfo OPTLINK : Error 81: Cannot EXPORT : SioKeyCode OPTLINK : Error 81: Cannot EXPORT : SioMessage OPTLINK : Error 81: Cannot EXPORT : SioParms OPTLINK : Error 81: Cannot EXPORT : SioPutc OPTLINK : Error 81: Cannot EXPORT : SioPuts OPTLINK : Error 81: Cannot EXPORT : SioRI OPTLINK : Error 81: Cannot EXPORT : SioRTS OPTLINK : Error 81: Cannot EXPORT : SioRead OPTLINK : Error 81: Cannot EXPORT : SioReset OPTLINK : Error 81: Cannot EXPORT : SioRxClear OPTLINK : Error 81: Cannot EXPORT : SioRxQue OPTLINK : Error 81: Cannot EXPORT : SioSetInteger OPTLINK : Error 81: Cannot EXPORT : SioStatus OPTLINK : Error 81: Cannot EXPORT : SioTimer OPTLINK : Error 81: Cannot EXPORT : SioTxClear OPTLINK : Error 81: Cannot EXPORT : SioTxQue OPTLINK : Error 81: Cannot EXPORT : SioUnGetc OPTLINK : Error 81: Cannot EXPORT : SioWinError simple.obj(simple) Error 35: Cannot Reach TARGET from FRAME at Relative 0015FH from Segment _TEXT FRAME =3D Frame of Group FLAT 0000 TARGET =3D External Symbol _AboutDlgProc 16 008BCH FIXUPP Type =3D 32-bit Offset --- errorlevel 77 = line feed. CCFLAGS =3D -c -DWIN32 simple.exe: simple.res simple.obj wsc32dm.def wsc32dm.lib about.obj = line.obj paint.obj sioerror.obj import32,simple32.def,simple.res link simple.rsp,simple,simple,wsc32dm.lib,wsc32dm.def,simple.res about.obj: about.c about.h dmc $(CCFLAGS) about.c simple.obj: simple.c simple.h wsc.h dmc $(CCFLAGS) simple.c sioerror.obj: sioerror.c sioerror.h wsc.h dmc $(CCFLAGS) sioerror.c paint.obj: paint.c paint.h dmc $(CCFLAGS) paint.c line.obj: line.c line.h wsc.h dmc $(CCFLAGS) line.c simple.res: simple.rc rcc -dWIN32 -D__NT__ simple.rc
Sep 24 2007
Can someone post a working .DEF file please? I've gotten all of the other errors I was having to go away but I get this no mater what I do for a .DEF file: "Error 52: .DEF Syntax Error" when I try to link. There can be no .def file at all, or an empty .def file (zero length) and I get the same error. I also tried copying the tty.def file from the sample\COMM section, still same error. This is what I have, but it doesn't seem to mater as no file at all gives "Error 52". Anyone know what "Error 52" means??? NAME Simple DESCRIPTION 'Simple Program' EXETYPE NT CODE PRELOAD MOVEABLE DISCARDABLE DATA PRELOAD MOVEABLE MULTIPLE STACKSIZE 8192 EXPORTS _MainWndProc 1 =3D MainWndProc _AboutDlgProc 2 =3D AboutDlgProc _SioBaud 8 =3D SioBaud _SioBrkSig 8 =3D SioBrkSig _SioCTS 4 =3D SioCTS _SioDCD 4 =3D SioDCD _SioDSR 4 =3D SioDSR _SioDTR 8 =3D SioDTR _SioDebug 4 =3D SioDebug _SioDone 4 =3D SioDone _SioEvent 8 =3D SioEvent _SioEventChar 12 =3D SioEventChar _SioEventWait 12 =3D SioEventWait _SioFlow 8 =3D SioFlow _SioGetReg 8 =3D SioGetReg _SioGetc 4 =3D SioGetc _SioGets 12 =3D SioGets _SioInfo 4 =3D SioInfo _SioKeyCode 4 =3D SioKeyCode _SioMessage 16 =3D SioMessage _SioParms 16 =3D SioParms _SioPutc 8 =3D SioPutc _SioPuts 12 =3D SioPuts _SioRI 4 =3D SioRI _SioRTS 8 =3D SioRTS _SioRead 8 =3D SioRead _SioReset 12 =3D SioReset _SioRxClear 4 =3D SioRxClear _SioRxQue 4 =3D SioRxQue _SioSetInteger 12 =3D SioSetInteger _SioStatus 8 =3D SioStatus _SioTimer 0 =3D SioTimer _SioTxClear 4 =3D SioTxClear _SioTxQue 4 =3D SioTxQue _SioUnGetc 8 =3D SioUnGetc _SioWinError 8 =3D SioWinError Linker line in Makefile: link simple.rsp,simple,simple.map,wsc32dm.lib,wsc32dm.def,simple.res On Mon, 24 Sep 2007 11:04:50 -0400, Bob Paddock = <graceindustries gmail.com> wrote:On Mon, 24 Sep 2007 09:48:55 -0400, AndyC <asmith yahoo.com> wrote:I posted how I used Jan Knepper's version of Implib.exe to imp- lement the latest GDI+ from the MSSDK over at 'c++.windows.32- bits'. It will probably work for you as well. Get the program at http://www.digitalmars.com/~jan/Did that. Installed in G:\DM\bin. Renamed implib.ini to implib_jk.ini and fixed the path to SPPN therein.Create an import lib using the program as follows: implib_jk /system /v /suffix /def /test /I. ***.lib ***.dllDid that.Be sure you provide the path to all the header files.There is only wsc.h, which is in the same directory as the wsc32.dll file, so /I. is fine.The resulting ***.lib can then be linked into your project.Still doesn't work. I spent the morning starting over with my Digital Mars 8.25 CD, and going through the tedious upgrading to 8.50. I'm wondering if I broke something else because now I have more errors (below) than I had on Friday. Got the same .DEF file as Friday: EXPORTS _SioBaud 8 =3D SioBaud _SioBrkSig 8 =3D SioBrkSig _SioCTS 4 =3D SioCTS _SioDCD 4 =3D SioDCD ... To answer Walters earlier comment about doing a hex dump of the .lib file: 00000000: F0 0D 00 00 0A 00 00 05 00 00 00 00 00 00 00 00 =p............... 00000010: 80 0C 00 0A 5F 53 69 6F 42 61 75 64 40 38 00 88 =...._SioBaud 8.. 00000020: 22 00 00 A0 01 00 0A 5F 53 69 6F 42 61 75 64 40 ".. =..._SioBaud 00000030: 38 09 77 73 63 33 32 2E 64 6C 6C 07 53 69 6F 42 =8.wsc32.dll.SioB 00000040: 61 75 64 00 8A 02 00 00 00 00 00 00 00 00 00 00 =aud............. 00000050: 80 0E 00 0C 5F 53 69 6F 42 72 6B 53 69 67 40 38 =...._SioBrkSig 8 00000060: 00 88 26 00 00 A0 01 00 0C 5F 53 69 6F 42 72 6B ..&.. =..._SioBrk 00000070: 53 69 67 40 38 09 77 73 63 33 32 2E 64 6C 6C 09 =Sig 8.wsc32.dll. 00000080: 53 69 6F 42 72 6B 53 69 67 00 8A 02 00 00 00 00 =SioBrkSig....... 00000090: 80 0B 00 09 5F 53 69 6F 43 54 53 40 34 00 88 20 =...._SioCTS 4.. 000000A0: 00 00 A0 01 00 09 5F 53 69 6F 43 54 53 40 34 09 .. =..._SioCTS 4. 000000B0: 77 73 63 33 32 2E 64 6C 6C 06 53 69 6F 43 54 53 =wsc32.dll.SioCTS ...A files titled "***.cpp" was also created, may be useful.#include <windows.h> int main ( int, char **, char ** ) { SioBaud ( ( int ) 0, ( unsigned ) 0 ); SioBrkSig ( ( int ) 0, ( char ) 0 ); SioCTS ( ( int ) 0 ); ... } link simple.rsp,simple,simple,wsc32dm.lib,wsc32dm.def,simple.res OPTLINK (R) for Win32 Release 8.00.1 Copyright (C) Digital Mars 1989-2004 All rights reserved. OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioBaud OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioBrkSig OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioCTS OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioDCD OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioDSR OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioDTR OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioDebug OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioDone OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioEvent OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioEventChar=OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioEventWait=OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioFlow OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioGetReg OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioGetc OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioGets OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioInfo OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioKeyCode OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioMessage OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioParms OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioPutc OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioPuts OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioRI OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioRTS OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioRead OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioReset OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioRxClear OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioRxQue OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioSetIntege=rOPTLINK : Error 180: No Match Found for Export/ENTRY - : SioStatus OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioTimer OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioTxClear OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioTxQue OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioUnGetc OPTLINK : Error 180: No Match Found for Export/ENTRY - : SioWinError simple.obj(simple) Error 42: Symbol Undefined _SelectObject 8 simple.obj(simple) Error 42: Symbol Undefined _GetStockObject 4 simple.obj(simple) Error 42: Symbol Undefined _SetMapMode 8 paint.obj(paint) Error 42: Symbol Undefined _ExtTextOutA 32 paint.obj(paint) Error 42: Symbol Undefined _SetBkMode 8 paint.obj(paint) Error 42: Symbol Undefined _CreateSolidBrush 4 paint.obj(paint) Error 42: Symbol Undefined _GetTextMetricsA 8 OPTLINK : Warning 148: USE16/USE32 Mismatch : DGROUP G:\DM\bin\..\lib\SNN.lib(winstart) Error 83: Illegal frame on start address OPTLINK : Warning 174: 32-bit Segments Inappropriate for 16-bit =Segmented output OPTLINK : Error 81: Cannot EXPORT : SioBaud OPTLINK : Error 81: Cannot EXPORT : SioBrkSig OPTLINK : Error 81: Cannot EXPORT : SioCTS OPTLINK : Error 81: Cannot EXPORT : SioDCD OPTLINK : Error 81: Cannot EXPORT : SioDSR OPTLINK : Error 81: Cannot EXPORT : SioDTR OPTLINK : Error 81: Cannot EXPORT : SioDebug OPTLINK : Error 81: Cannot EXPORT : SioDone OPTLINK : Error 81: Cannot EXPORT : SioEvent OPTLINK : Error 81: Cannot EXPORT : SioEventChar OPTLINK : Error 81: Cannot EXPORT : SioEventWait OPTLINK : Error 81: Cannot EXPORT : SioFlow OPTLINK : Error 81: Cannot EXPORT : SioGetReg OPTLINK : Error 81: Cannot EXPORT : SioGetc OPTLINK : Error 81: Cannot EXPORT : SioGets OPTLINK : Error 81: Cannot EXPORT : SioInfo OPTLINK : Error 81: Cannot EXPORT : SioKeyCode OPTLINK : Error 81: Cannot EXPORT : SioMessage OPTLINK : Error 81: Cannot EXPORT : SioParms OPTLINK : Error 81: Cannot EXPORT : SioPutc OPTLINK : Error 81: Cannot EXPORT : SioPuts OPTLINK : Error 81: Cannot EXPORT : SioRI OPTLINK : Error 81: Cannot EXPORT : SioRTS OPTLINK : Error 81: Cannot EXPORT : SioRead OPTLINK : Error 81: Cannot EXPORT : SioReset OPTLINK : Error 81: Cannot EXPORT : SioRxClear OPTLINK : Error 81: Cannot EXPORT : SioRxQue OPTLINK : Error 81: Cannot EXPORT : SioSetInteger OPTLINK : Error 81: Cannot EXPORT : SioStatus OPTLINK : Error 81: Cannot EXPORT : SioTimer OPTLINK : Error 81: Cannot EXPORT : SioTxClear OPTLINK : Error 81: Cannot EXPORT : SioTxQue OPTLINK : Error 81: Cannot EXPORT : SioUnGetc OPTLINK : Error 81: Cannot EXPORT : SioWinError simple.obj(simple) Error 35: Cannot Reach TARGET from FRAME at Relative 0015FH from Segment _TEXT FRAME =3D Frame of Group FLAT 0000 TARGET =3D External Symbol _AboutDlgProc 16 008BCH FIXUPP Type =3D 32-bit Offset --- errorlevel 77, =line feed. CCFLAGS =3D -c -DWIN32 simple.exe: simple.res simple.obj wsc32dm.def wsc32dm.lib about.obj =line.obj paint.obj sioerror.objimport32,simple32.def,simple.res link simple.rsp,simple,simple,wsc32dm.lib,wsc32dm.def,simple.res about.obj: about.c about.h dmc $(CCFLAGS) about.c simple.obj: simple.c simple.h wsc.h dmc $(CCFLAGS) simple.c sioerror.obj: sioerror.c sioerror.h wsc.h dmc $(CCFLAGS) sioerror.c paint.obj: paint.c paint.h dmc $(CCFLAGS) paint.c line.obj: line.c line.h wsc.h dmc $(CCFLAGS) line.c simple.res: simple.rc rcc -dWIN32 -D__NT__ simple.rc
Sep 26 2007
Bob Paddock wrote:This is what I have, but it doesn't seem to mater as no file at all gives "Error 52". Anyone know what "Error 52" means???All linker error messages have more or less helpful explanations at: http://www.digitalmars.com/ctg/OptlinkErrorMessages.html
Sep 27 2007
On Thu, 27 Sep 2007 18:43:18 -0400, Walter Bright <newshound1 digitalmars.com> wrote:Bob Paddock wrote:I had already looked there before I posted the question. "Error 52" is in the "less helpful" class.This is what I have, but it doesn't seem to mater as no file at all gives "Error 52". Anyone know what "Error 52" means???All linker error messages have more or less helpful explanations at: http://www.digitalmars.com/ctg/OptlinkErrorMessages.html
Sep 28 2007
Bob Paddock wrote:On Thu, 27 Sep 2007 18:43:18 -0400, Walter Bright <newshound1 digitalmars.com> wrote:I agree.Bob Paddock wrote:I had already looked there before I posted the question. "Error 52" is in the "less helpful" class.This is what I have, but it doesn't seem to mater as no file at all gives "Error 52". Anyone know what "Error 52" means???All linker error messages have more or less helpful explanations at: http://www.digitalmars.com/ctg/OptlinkErrorMessages.html
Sep 28 2007
You have a fairly complex project with a lot of files, and not enough of it is in the posting to see what the problem is, though I suspect the simple.rsp may have an error in its syntax, causing some file other than the .def file from being considered the .def file. When faced with problems of this nature, the only way to figure out what is going on is to: 1) make a copy of the complete project 2) simplify it by deleting half of it 3) see if that builds 4) if it does build, go to step 2 5) delete the other half, go to step 2 until you have the minimal test case. Then, the source of the problem often becomes glaringly apparent, as there is nothing else.
Sep 27 2007
On Thu, 27 Sep 2007 18:47:18 -0400, Walter Bright <newshound1 digitalmars.com> wrote:You have a fairly complex project with a lot of files,.. until you have the minimal test case. Then, the source of the problem often becomes glaringly apparent, as there is nothing else.Actually I gave up on building the sample at all, went a head and wrote my application, which linked and compiled just fine. No .def file ever appeared, which just confuses me more as to when the .def file is needed? How was the conference?
Sep 28 2007
Bob Paddock wrote:On Thu, 27 Sep 2007 18:47:18 -0400, Walter Bright <newshound1 digitalmars.com> wrote:Most apps won't need a .def file. You'll need them when creating a dll, though.You have a fairly complex project with a lot of files,.. until you have the minimal test case. Then, the source of the problem often becomes glaringly apparent, as there is nothing else.Actually I gave up on building the sample at all, went a head and wrote my application, which linked and compiled just fine. No .def file ever appeared, which just confuses me more as to when the .def file is needed?How was the conference?The feedback we've received has been very positive.
Sep 28 2007
On Fri, 28 Sep 2007 14:54:43 -0400, Walter Bright = <newshound1 digitalmars.com> wrote:With new wsc.dll problem is back, and now its in my application instead of the sample code. :-(Actually I gave up on building the sample at all, went a head and wrote my application, which linked and compiled just fine., =No .def file ever appeared, which just confuses me more as to when the .def file is needed?Most apps won't need a .def file. You'll need them when creating a dll=though.Got a new DLL of my serial port library yesterday. I did this, to make .def and .lib: implib_jk /system /v /suffix /def /test /IG:\DM\include\win32 /I. = wsc32dm.lib wsc32.dll When I link with no DEF file I get this: OPTLINK (R) for Win32 Release 8.00.1 Copyright (C) Digital Mars 1989-2004 All rights reserved. DMCDebug\RxFilterFrame.obj(RxFilterFrame) Error 42: Symbol Undefined _SioDone 4 DMCDebug\RxFilterFrame.obj(RxFilterFrame) Error 42: Symbol Undefined _SioPutc 8 DMCDebug\RxFilterFrame.obj(RxFilterFrame) Error 42: Symbol Undefined _SioReset 12 DMCDebug\RxFilterFrame.obj(RxFilterFrame) Error 42: Symbol Undefined _SioGetc 4 DMCDebug\RxFilterFrame.obj(RxFilterFrame) Error 42: Symbol Undefined _SioInfo 4 DMCDebug\RxFilterFrame.obj(RxFilterFrame) Error 42: Symbol Undefined _SioBaud 8 DMCDebug\RxFilterFrame.obj(RxFilterFrame) Error 42: Symbol Undefined _SioParms 16 DMCDebug\RxFilterFrame.obj(RxFilterFrame) Error 42: Symbol Undefined _SioKeyCode 4 --- errorlevel 8 with .def file I get this: OPTLINK (R) for Win32 Release 8.00.1 Copyright (C) Digital Mars 1989-2004 All rights reserved. OPTLINK : Error 181: Multiple Matches Found for Export/ENTRY - : SioBau= d OPTLINK : Error 182: Matches above Export/ENTRY - : _SioBaud OPTLINK : Error 182: Matches above Export/ENTRY - : _SioBaud 8 OPTLINK : Error 181: Multiple Matches Found for Export/ENTRY - : SioDon= e OPTLINK : Error 182: Matches above Export/ENTRY - : _SioDone OPTLINK : Error 182: Matches above Export/ENTRY - : _SioDone 4 OPTLINK : Error 181: Multiple Matches Found for Export/ENTRY - : SioGet= c OPTLINK : Error 182: Matches above Export/ENTRY - : _SioGetc OPTLINK : Error 182: Matches above Export/ENTRY - : _SioGetc 4 OPTLINK : Error 181: Multiple Matches Found for Export/ENTRY - : SioInf= o OPTLINK : Error 182: Matches above Export/ENTRY - : _SioInfo OPTLINK : Error 182: Matches above Export/ENTRY - : _SioInfo 4 OPTLINK : Error 181: Multiple Matches Found for Export/ENTRY - : = SioKeyCode OPTLINK : Error 182: Matches above Export/ENTRY - : _SioKeyCode OPTLINK : Error 182: Matches above Export/ENTRY - : _SioKeyCode 4 OPTLINK : Error 181: Multiple Matches Found for Export/ENTRY - : SioPar= ms OPTLINK : Error 182: Matches above Export/ENTRY - : _SioParms OPTLINK : Error 182: Matches above Export/ENTRY - : _SioParms 16 OPTLINK : Error 181: Multiple Matches Found for Export/ENTRY - : SioPut= c OPTLINK : Error 182: Matches above Export/ENTRY - : _SioPutc OPTLINK : Error 182: Matches above Export/ENTRY - : _SioPutc 8 OPTLINK : Error 181: Multiple Matches Found for Export/ENTRY - : SioRes= et OPTLINK : Error 182: Matches above Export/ENTRY - : _SioReset OPTLINK : Error 182: Matches above Export/ENTRY - : _SioReset 12 OPTLINK : Error 81: Cannot EXPORT : _SioBaud 8 OPTLINK : Error 81: Cannot EXPORT : _SioDone 4 OPTLINK : Error 81: Cannot EXPORT : _SioGetc 4 OPTLINK : Error 81: Cannot EXPORT : _SioInfo 4 OPTLINK : Error 81: Cannot EXPORT : _SioKeyCode 4 OPTLINK : Error 81: Cannot EXPORT : _SioParms 16 OPTLINK : Error 81: Cannot EXPORT : _SioPutc 8 OPTLINK : Error 81: Cannot EXPORT : _SioReset 12 --- errorlevel 32 How can it be both ways? wsc32dm.def: EXPORTS _SioBaud 8 =3D SioBaud _SioDone 4 =3D SioDone _SioGetc 4 =3D SioGetc _SioInfo 4 =3D SioInfo _SioKeyCode 4 =3D SioKeyCode _SioParms 16 =3D SioParms _SioPutc 8 =3D SioPutc _SioReset 12 =3D SioReset This should be all on one one, I broke it up for this message; echo /NOLOGO /SILENT /NOI /DELEXECUTABLE /EXETYPE:NT /su:windows:4.0 /DEBUG /CODEVIEW DMCDebug\RxFilterApp.obj DMCDebug\RxFilterFrame.obj, DMCDebug\RxFilter.exe,DMCDebug\RxFilter.map, "G:\wx286\lib\dmc_lib\" "G:\DM\lib\" wsc32dm.lib [lot more .lib files]= ...wsock32.lib,wsc32dm.def,DMCDebug\RxFilter.res > RxFilter.cnf link RxFilter.cnf Where am I going wrong here?
Oct 03 2007
Bob Paddock wrote:Where am I going wrong here?Try reversing the order of the exports, i.e.: EXPORTS SioBaud = _SioBaud 8
Oct 10 2007
On Wed, 10 Oct 2007 05:10:11 -0400, Walter Bright = <newshound1 digitalmars.com> wrote:Bob Paddock wrote:That gets me: OPTLINK (R) for Win32 Release 8.00.1 Copyright (C) Digital Mars 1989-2004 All rights reserved. OPTLINK : Error 42: Symbol Undefined _SioBaud 8 OPTLINK : Error 42: Symbol Undefined _SioDone 4 OPTLINK : Error 42: Symbol Undefined _SioGetc 4 OPTLINK : Error 42: Symbol Undefined _SioInfo 4 OPTLINK : Error 42: Symbol Undefined _SioKeyCode 4 OPTLINK : Error 42: Symbol Undefined _SioParms 16 OPTLINK : Error 42: Symbol Undefined _SioPuts 12 OPTLINK : Error 42: Symbol Undefined _SioReset 12 OPTLINK : Error 42: Symbol Undefined _SioRxQue 4 OPTLINK : Error 81: Cannot EXPORT : _SioBaud 8 OPTLINK : Error 81: Cannot EXPORT : _SioDone 4 OPTLINK : Error 81: Cannot EXPORT : _SioGetc 4 OPTLINK : Error 81: Cannot EXPORT : _SioInfo 4 OPTLINK : Error 81: Cannot EXPORT : _SioKeyCode 4 OPTLINK : Error 81: Cannot EXPORT : _SioParms 16 OPTLINK : Error 81: Cannot EXPORT : _SioPuts 12 OPTLINK : Error 81: Cannot EXPORT : _SioReset 12 OPTLINK : Error 81: Cannot EXPORT : _SioRxQue 4 --- errorlevel 18 with this .def file: EXPORTS SioBaud =3D _SioBaud 8 SioDone =3D _SioDone 4 SioGetc =3D _SioGetc 4 SioInfo =3D _SioInfo 4 SioKeyCode =3D _SioKeyCode 4 SioParms =3D _SioParms 16 SioPuts =3D _SioPuts 12 SioReset =3D _SioReset 12 SioRxQue =3D _SioRxQue 4 Is there some command line option I can use to stop the compiler from putting in these useless goofball numbers in the first place? A hexdump of wsc32.dll does not show such numbers, nor does the created wsc32.lib. A hexdump of the compiler .obj files is they only place I find them.Where am I going wrong here?Try reversing the order of the exports, i.e.: EXPORTS SioBaud =3D _SioBaud 8
Oct 10 2007
Bob Paddock wrote:Is there some command line option I can use to stop the compiler from putting in these useless goofball numbers in the first place? A hexdump of wsc32.dll does not show such numbers, nor does the created wsc32.lib. A hexdump of the compiler .obj files is they only place I find them.Those "goofball numbers" are the Microsoft-defined standard windows calling convention. The fact that those get stripped for DLLs is another Microsoft invention that never made sense to me. A hexdump is not a very good way to look at .obj files. Try using obj2asm or dumpobj. To look at import libraries, use lib to extract one of the modules in it, then use dumpobj or obj2asm on it.
Oct 10 2007
On Wed, 10 Oct 2007 15:51:22 -0400, Walter Bright <newshound1 digitalmars.com> wrote:A hexdump is not a very good way to look at .obj files. Try using obj2asm or dumpobj. To look at import libraries, use lib to extract one of the modules in it, then use dumpobj or obj2asm on it.I created wsc32.lib using implib(_jk) from the wsc32.dll I was supplied. Doing lib -x wsc32.lib SioBaud crated a 44 byte file. Doing 'dumpobj SioBaud.obj' told me what I already knew, the function is called "SioBaud". Not _SioBaud, not _SioBaud 8, just plain old "SioBaud".
Oct 10 2007
I looked at the header files (wsc.h) and this MC declspec garbage. Maybe that is causing problems when you make the import lib? Just force it all FAR PASCAL. ===================================================== #ifdef STATIC_LIBRARY #define DLL_IMPORT_EXPORT #else #ifdef WIN32 #ifdef DLL_SOURCE_CODE #define DLL_IMPORT_EXPORT __declspec(dllexport) __stdcall #else #define DLL_IMPORT_EXPORT __declspec(dllimport) __stdcall #endif #else #define DLL_IMPORT_EXPORT FAR PASCAL #endif #endif
Oct 22 2007
Bob Paddock wrote:Where am I going wrong here?It can really help to cut your project down. I suggest cutting it down to one export, one library being linked in, etc.
Oct 10 2007
On Wed, 10 Oct 2007 15:52:58 -0400, Walter Bright <newshound1 digitalmars.com> wrote:Bob Paddock wrote:All I'm doing is replacing wsc32.dll/wsc32.lib version 4.2 with wsc32.dll/wsc32.lib version 4.3. I'm changing nothing in the working project. With wsc32_42 I did not need any .def file, everything Just Worked. I've tried creating the wsc32.lib file with both implib and implib_jk with the same results from wsc32.dll 43. With wsc32_43 no combination of magic words in the .def file will get the project to link. It either tells me _SioBaud 8 is undefined, or "Error 81: Can Not Export _SioBaud ", or both. What is "Error 81" truly telling me?Where am I going wrong here?It can really help to cut your project down. I suggest cutting it down to one export, one library being linked in, etc.
Oct 10 2007
Bob Paddock wrote:On Wed, 10 Oct 2007 15:52:58 -0400, Walter Bright <newshound1 digitalmars.com> wrote:Then I suggest running lib over wsc32.lib and wsc32_42.lib to create wcs32.lst and wsc32_42.lst. Then, use lib to extract the .obj file from each that has SioBaud in it. Then, obj2asm or dumpobj each of those .obj files to see what is different.Bob Paddock wrote:All I'm doing is replacing wsc32.dll/wsc32.lib version 4.2 with wsc32.dll/wsc32.lib version 4.3. I'm changing nothing in the working project. With wsc32_42 I did not need any .def file, everything Just Worked.Where am I going wrong here?It can really help to cut your project down. I suggest cutting it down to one export, one library being linked in, etc.
Oct 11 2007
On Thu, 11 Oct 2007 04:42:47 -0400, Walter Bright <newshound1 digitalmars.com> wrote:Bob Paddock wrote:I've really *REALLY* learned to hate this crap. I was happily compiling with my version 4.2 DLL, everything was going fine. Then I added add a new .cpp file to the makefile, related in no way at all to the serial port DLL stuff, and now I get this: OPTLINK (R) for Win32 Release 8.00.1 Copyright (C) Digital Mars 1989-2004 All rights reserved. DMCDebug\RxFilterFrame.obj(RxFilterFrame) Error 42: Symbol Undefined _SioPuts 12 DMCDebug\RxFilterFrame.obj(RxFilterFrame) Error 42: Symbol Undefined _SioDone 4 DMCDebug\RxFilterFrame.obj(RxFilterFrame) Error 42: Symbol Undefined _SioReset 12 DMCDebug\RxFilterFrame.obj(RxFilterFrame) Error 42: Symbol Undefined _SioGetc 4 DMCDebug\RxFilterFrame.obj(RxFilterFrame) Error 42: Symbol Undefined _SioRxQue 4 DMCDebug\RxFilterFrame.obj(RxFilterFrame) Error 42: Symbol Undefined _SioInfo 4 DMCDebug\RxFilterFrame.obj(RxFilterFrame) Error 42: Symbol Undefined _SioBaud 8 DMCDebug\RxFilterFrame.obj(RxFilterFrame) Error 42: Symbol Undefined _SioParms 16 DMCDebug\RxFilterFrame.obj(RxFilterFrame) Error 42: Symbol Undefined _SioKeyCode 4 --- errorlevel 9 Done. 9 errors, 0 warnings Why did a adding a totally unrelated file break this stuff again? I'd like to simply work on my project, not continually fight the tools...On Wed, 10 Oct 2007 15:52:58 -0400, Walter Bright <newshound1 digitalmars.com> wrote:Bob Paddock wrote:All I'm doing is replacing wsc32.dll/wsc32.lib version 4.2 with wsc32.dll/wsc32.lib version 4.3. I'm changing nothing in the working project. With wsc32_42 I did not need any .def file, everything Just Worked.Where am I going wrong here?It can really help to cut your project down. I suggest cutting it down to one export, one library being linked in, etc.
Nov 13 2007