DLL under windows

Sam Hu samhu.samhu at gmail.com
Mon Nov 9 19:27:37 PST 2009


DMD2.036.

Under dmd/phobos release package,inside samples\d\mydll folder,there is a sample to write dll and import lib fille from.It compiled and runs fine.But when I try to modify a bit,it produce strange error problem.Kindly refer to the sample for source.
In mydll2.d which contains the exported function implentation:
module mydll;
import core.stdc.stdio;
export void dllprint() { printf("hello dll world\n"); }

I re-wrote dllprint with below:
export ulong dllprint(uint i)
{
    ulong sum;
    if(i==0)
          sum=1;
    else
    {
          for(uint index=1;index<=i;index++)
          sum*=index;

    }
    return sum;
}

In mydll.d:
Original:
export void dllprint();
Modified:
export ulong dllprint(uint i);

In test.d:
Original:
import mydll;

int main()
{
   mydll.dllprint();
   return 0;
}

Modified:
...
printf("%d\n",mydll.dllprint(12));
...

Leave everything other unchanged.
Error message when run test.exe:

F:\DLang\DTwo\dmd\samples\d\mydll>dmd -ofmydll.dll mydll2.d dll.d mydll.def

F:\DLang\DTwo\dmd\samples\d\mydll>implib/system mydll.lib mydll.dll
Digital Mars Import Library Manager Version 7.6B1n
Copyright (C) Digital Mars 2000.  All Rights Reserved.
Input is a Windows NT DLL file 'MYDLL.DLL'.
Output is a Windows NT import library.
Digital Mars Import Library Creator complete.

F:\DLang\DTwo\dmd\samples\d\mydll>dmd test.d mydll.lib
OPTLINK (R) for Win32  Release 8.00.2
Copyright (C) Digital Mars 1989-2009  All rights reserved.
http://www.digitalmars.com/ctg/optlink.html
F:\DLang\DTwo\dmd\windows\bin\..\lib\phobos.lib(dmain2)
 Error 42: Symbol Undefined _D5mydll8dllprintFkZm
--- errorlevel 1

F:\DLang\DTwo\dmd\samples\d\mydll>

Was I missing something?

Thanks for your help in advance.

Regards,
Sam


More information about the Digitalmars-d-learn mailing list