Thread overview | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
October 30, 2006 Problem compiling DLL | ||||
---|---|---|---|---|
| ||||
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 |
November 06, 2006 Re: Problem compiling DLL | ||||
---|---|---|---|---|
| ||||
Posted in reply to Robert M. Münch | 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 |
November 06, 2006 Re: Problem compiling DLL | ||||
---|---|---|---|---|
| ||||
Posted in reply to Robert M. Münch | Robert M. Münch wrote:
> 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
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.
Arjan
|
November 10, 2006 Re: Problem compiling DLL | ||||
---|---|---|---|---|
| ||||
Posted in reply to Arjan Knepper | 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.dll > What 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 |
November 10, 2006 Re: Problem compiling DLL | ||||
---|---|---|---|---|
| ||||
Posted in reply to Robert M. Münch | Robert M. Münch wrote:
> 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.dll
>
>> What 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
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 Knepper
|
November 10, 2006 Re: Problem compiling DLL | ||||
---|---|---|---|---|
| ||||
Posted in reply to Arjan Knepper | 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 WRITE Ok, 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 |
November 10, 2006 Re: Problem compiling DLL | ||||
---|---|---|---|---|
| ||||
Posted in reply to Arjan Knepper | 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
|
November 13, 2006 Re: Problem compiling DLL | ||||
---|---|---|---|---|
| ||||
Posted in reply to Robert M. Münch | 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.de
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?
Arjan
|
November 17, 2006 Re: Problem compiling DLL | ||||
---|---|---|---|---|
| ||||
Posted in reply to Arjan Knepper | 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 |
November 17, 2006 Re: Problem compiling DLL | ||||
---|---|---|---|---|
| ||||
Posted in reply to Robert M. Münch | Robert M. Münch wrote:
> 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
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?
Arjan
|
Copyright © 1999-2021 by the D Language Foundation