Linking with C++ produced by Visual Studio .NET on Windows XP?
Brian Hulley
brianh at metamilk.com
Tue Jan 24 06:28:19 EST 2006
Cyril Schmidt wrote:
> Brian Hulley wrote:
>> Thanks. The only problem is that dlltool doesn't work because I don't
>> have
>> cygwin installed.
>
> dlltool usually comes with the Windows distribution of GHC (at least
> GHC 6.4 and 6.4.1 have it; check gcc-lib directory).
Thanks - I wonder why they didn't put all the binaries in the bin directory?
Anyway, I've added gcc-lib to my path and deleted the version of dlltool.exe
that I downloaded, but for some reason it won't link. I used the following
commands (as per your post):
C++ file adapted from default generated by VS DLL project:
TestDLL.cpp:
// TestDLL.cpp : Defines the entry point for the DLL application.
//
#include "stdafx.h"
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}
int __stdcall cfun(int x){
return x * 3;
}
I built this with VS, then wrote a def file:
TestDLL.def:
LIBRARY TestDLL
EXPORTS
cfun
Then I generated the lib using:
dlltool -d TestDLL.def -l libTestDLL.a
Then I wrote a Haskell program Main.hs:
module Main where
import GHC.Exts
foreign import ccall cfun :: Int# -> Int#
main = do
let a = cfun 10#
putStrLn $ show $ I# a
and compiled with
ghc -fglasgow-exts --make Main.hs -optl-lTestDLL -optl-L
but I now get an error message:
Linking ...
c:\ghc\ghc-6.4\gcc-lib\ld.exe: cannot find -lTestDLL
Any ideas?
Thanks, Brian.
More information about the Glasgow-haskell-users
mailing list