Jump to page: 1 2
Thread overview
Problem compiling DLL
Oct 30, 2006
Robert M. Münch
Nov 06, 2006
Robert M. Münch
Nov 06, 2006
Arjan Knepper
Nov 10, 2006
Robert M. Münch
Nov 10, 2006
Arjan Knepper
Nov 10, 2006
Robert M. Münch
Nov 10, 2006
Robert M. Münch
Nov 13, 2006
Arjan Knepper
Nov 17, 2006
Robert M. Münch
Nov 17, 2006
Arjan Knepper
Feb 02, 2007
DarenW
Feb 04, 2007
Robert M. Münch
October 30, 2006
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
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
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
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
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
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
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
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
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
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
« First   ‹ Prev
1 2