c++.windows.32-bits - Problem compiling DLL
- =?iso-8859-1?Q?Robert_M=2E_M=FCnch?= (37/37) Oct 30 2006 Hi, I have a problem compiling a DLL. The C files all compile without
- =?iso-8859-1?Q?Robert_M=2E_M=FCnch?= (3/4) Nov 06 2006 Can no one help me with this one? :-( Robert
- Arjan Knepper (6/12) Nov 06 2006 Can you post the exact compiler and linker commandlines used to create
- =?iso-8859-1?Q?Robert_M=2E_M=FCnch?= (13/17) Nov 10 2006 I use the following compiler flags:
- Arjan Knepper (17/40) Nov 10 2006 0.) Is the compiler option "-mnw" is really needed?
- =?iso-8859-1?Q?Robert_M=2E_M=FCnch?= (12/26) Nov 10 2006 Hi, no, I just followed the docs.
-
=?iso-8859-1?Q?Robert_M=2E_M=FCnch?=
(15/15)
Nov 10 2006
On Fri, 10 Nov 2006 13:44:25 +0100, Arjan Knepper
- Arjan Knepper (5/21) Nov 13 2006 What isn't exactly working? How are you using the dll?
- =?iso-8859-1?Q?Robert_M=2E_M=FCnch?= (12/15) Nov 17 2006 Hi, I'm accessing the DLL from a scripting language using late
- Arjan Knepper (5/22) Nov 17 2006 I know DMC has a different way of handling the returning of floats from
- DarenW (12/12) Feb 01 2007 FWIW, I had the same initial problem with the Error 180 and all that. F...
- =?iso-8859-1?Q?Robert_M=2E_M=FCnch?= (3/16) Feb 04 2007 Hi, thanks for the feedback. I'm going to try it out and let you all
Hi, I have a problem compiling a DLL. The C files all compile without any problems to OBJ files. I than use the following line to create my DLL (I have obmitted mist OBJ files to keep the posting short): --- BEGIN link alter.obj analyze.obj ... where.obj kernel32.lib,myvaluedriver.dll,,,myvaluedriver.def 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 - : activate_cerod OPTLINK : Warning 148: USE16/USE32 Mismatch : DGROUP OPTLINK : Warning 174: 32-bit Segments Inappropriate for 16-bit Segmented output OPTLINK : Error 81: Cannot EXPORT : activate_cerod alter.obj(alter) Error 35: Cannot Reach TARGET from FRAME at Relative 0000CH from Segment _TEXT FRAME = Frame of Group FLAT 0000 TARGET = External Symbol _value_text 39D91H FIXUPP Type = 32-bit Conditional JMP --- errorlevel 3 ---END The function ACTIVATE_CEROD has been declared as: extern void activate_cerod(const char*); And defined as: int _export activate_cerod(const char *text){... My DEF file looks like this: LIBRARY myvaluedriver EXETYPE WINDOWS DATA SINGLE MOVEABLE EXPORTS activate_cerod Can someone please tell me what I'm doing wrong? Thanks a lot. -- Robert M. Münch Management & IT Freelancer http://www.robertmuench.de
Oct 30 2006
On Mon, 30 Oct 2006 09:45:00 +0100, Robert M. Münch <robert.muench robertmuench.de> wrote:Hi, I have a problem compiling a DLL. The C files all compile ...Can no one help me with this one? :-( Robert
Nov 06 2006
Robert M. Münch wrote:On Mon, 30 Oct 2006 09:45:00 +0100, Robert M. Münch <robert.muench robertmuench.de> wrote:Can you post the exact compiler and linker commandlines used to create the obj files and the link command to create the dll? What exactly are you trying to achive? A simple C linkable DLL or more sophisticated uses of the dll. ArjanHi, I have a problem compiling a DLL. The C files all compile ...Can no one help me with this one? :-( Robert
Nov 06 2006
On Mon, 06 Nov 2006 23:58:10 +0100, Arjan Knepper <arjan ask.me.to> wrote:Can you post the exact compiler and linker commandlines used to create the obj files and the link command to create the dll?I use the following compiler flags: CFLAGS = -mnw -W -DSQLITE_HAS_CODEC=1 -DSQLITE_ENABLE_CEROD=1 -DSQLITE_DLL=1 And for linking: link <all .OBJ files> kernel32.lib, myvaluedriver.dllWhat exactly are you trying to achive? A simple C linkable DLL or more sophisticated uses of the dll.Just a simple C linkable DLL. Nothing fancy, just plain standard DLL. Thanks a lot so far. -- Robert M. Münch Management & IT Freelancer http://www.robertmuench.de
Nov 10 2006
Robert M. Münch wrote:On Mon, 06 Nov 2006 23:58:10 +0100, Arjan Knepper <arjan ask.me.to> wrote:0.) Is the compiler option "-mnw" is really needed? 1.) The compiler option -W should be -WD when building a dll and -WA in all other win32 cases. 2.) the link line something like this: link /CO /NOPACKF /DEBUGLI /NOI /DE /XN /ENTRY:_DllMainCRTStartup /IMPLIB:"bar.lib" "<bar objs>" , "bar.dll" ,, user32.lib kernel32.lib , "bar.def" 3.) the bar.def file should be something like this: LIBRARY "bar.dll" DESCRIPTION 'bar Library' EXETYPE NT SUBSYSTEM WINDOWS CODE EXECUTE READ DATA READ WRITE HTH Arjan KnepperCan you post the exact compiler and linker commandlines used to create the obj files and the link command to create the dll?I use the following compiler flags: CFLAGS = -mnw -W -DSQLITE_HAS_CODEC=1 -DSQLITE_ENABLE_CEROD=1 -DSQLITE_DLL=1 And for linking: link <all .OBJ files> kernel32.lib, myvaluedriver.dllWhat exactly are you trying to achive? A simple C linkable DLL or more sophisticated uses of the dll.Just a simple C linkable DLL. Nothing fancy, just plain standard DLL. Thanks a lot so far. --Robert M. Münch Management & IT Freelancer http://www.robertmuench.de
Nov 10 2006
On Fri, 10 Nov 2006 13:44:25 +0100, Arjan Knepper <arjan ask.me.to> wrote:0.) Is the compiler option "-mnw" is really needed?Hi, no, I just followed the docs.1.) The compiler option -W should be -WD when building a dll and -WA in all other win32 cases. 2.) the link line something like this: link /CO /NOPACKF /DEBUGLI /NOI /DE /XN /ENTRY:_DllMainCRTStartup /IMPLIB:"bar.lib" "<bar objs>" , "bar.dll" ,, user32.lib kernel32.lib , "bar.def" 3.) the bar.def file should be something like this: LIBRARY "bar.dll" DESCRIPTION 'bar Library' EXETYPE NT SUBSYSTEM WINDOWS CODE EXECUTE READ DATA READ WRITEOk, I have tried this. This brought me a big step further. The only thing now is, that I now get a SYMBOL UNDEFINED message in the linking step. Where the symbol mentioned is prefixed with an underscore, but the function is specified without the underscore in all source files. Any idea about this one? Thanks so far. -- Robert M. Münch Management & IT Freelancer http://www.robertmuench.de
Nov 10 2006
On Fri, 10 Nov 2006 13:44:25 +0100, Arjan Knepper <arjan ask.me.to> wrote: Hi, so I made it to get a DLL with a good looking export section. No warning, errors or anything else. The only problem is, the DLL isn't working when compiled with DMC. I have the same DLL done with MSVC and it works. Looking at the DLL structure I can see differences in the number of sections etc. And the DM version has a debug section, even I didn't specified any debug stuff, nor that I want to get a map file. Any ideas how I can drill down the differences? IMO it can't be the code. -- Robert M. Münch Management & IT Freelancer http://www.robertmuench.de
Nov 10 2006
Robert M. Münch wrote:On Fri, 10 Nov 2006 13:44:25 +0100, Arjan Knepper <arjan ask.me.to> wrote: Hi, so I made it to get a DLL with a good looking export section. No warning, errors or anything else. The only problem is, the DLL isn't working when compiled with DMC. I have the same DLL done with MSVC and it works. Looking at the DLL structure I can see differences in the number of sections etc. And the DM version has a debug section, even I didn't specified any debug stuff, nor that I want to get a map file. Any ideas how I can drill down the differences? IMO it can't be the code. --Robert M. Münch Management & IT Freelancer http://www.robertmuench.deWhat isn't exactly working? How are you using the dll? In combination with dmc compiled exe's using a import lib or delayed/late binding? Arjan
Nov 13 2006
On Mon, 13 Nov 2006 13:11:14 +0100, Arjan Knepper <arjan ask.me.to> wrote:What isn't exactly working? How are you using the dll? In combination with dmc compiled exe's using a import lib or delayed/late binding?Hi, I'm accessing the DLL from a scripting language using late binding. And my app works with the MSVC version but not the DM version. Calling the first function freezes my app. The DLL we are talking about is SQLite. Back in 2003 there was some feedback about a problem of DMC given to Walter. But I expect this one to be solved, but didn't cross-check it. -- Robert M. Münch Management & IT Freelancer http://www.robertmuench.de
Nov 17 2006
Robert M. Münch wrote:On Mon, 13 Nov 2006 13:11:14 +0100, Arjan Knepper <arjan ask.me.to> wrote:I know DMC has a different way of handling the returning of floats from the dll which might cause problems. I'm not aware of other diffs. Do you have a idde prj file for the project or are you using make files? ArjanWhat isn't exactly working? How are you using the dll? In combination with dmc compiled exe's using a import lib or delayed/late binding?Hi, I'm accessing the DLL from a scripting language using late binding. And my app works with the MSVC version but not the DM version. Calling the first function freezes my app. The DLL we are talking about is SQLite. Back in 2003 there was some feedback about a problem of DMC given to Walter. But I expect this one to be solved, but didn't cross-check it. --Robert M. Münch Management & IT Freelancer http://www.robertmuench.de
Nov 17 2006
FWIW, I had the same initial problem with the Error 180 and all that. Finally solved that by adding CODE and DATA lines to my .def file. Since the lines i added differ from what was shown in this thread, others might want to see and maybe explain what's going on. (Although, i have yet to get as far as running a test app to use my DLL...) LIBRARY wavescrawlcore INITGLOBAL EXETYPE NT CODE PRELOAD DISCARDABLE DATA PRELOAD SINGLE EXPORTS CreateWaveScrawler 1 ....
Feb 01 2007
On Fri, 02 Feb 2007 06:13:13 +0100, DarenW <darenw comcast.net> wrote:FWIW, I had the same initial problem with the Error 180 and all that. Finally solved that by adding CODE and DATA lines to my .def file. Since the lines i added differ from what was shown in this thread, others might want to see and maybe explain what's going on. (Although, i have yet to get as far as running a test app to use my DLL...) LIBRARY wavescrawlcore INITGLOBAL EXETYPE NT CODE PRELOAD DISCARDABLE DATA PRELOAD SINGLE EXPORTS CreateWaveScrawler 1 ....Hi, thanks for the feedback. I'm going to try it out and let you all know. Robert
Feb 04 2007