RE: Linking with C++ produced by Visual Studio .NET on Windows XP?

GHC now makes it easy for all users to contribute new documentation about GHC to help other users, by adding to the GHC documentation wiki. See the "Collaborative documentation" heading on http://haskell.org/haskellwiki/GHC:Documentation Linking to C++ would be an ideal topic. It's a regular question, and not one of our strengths at GHC HQ! Simon | -----Original Message----- | From: glasgow-haskell-users-bounces@haskell.org [mailto:glasgow-haskell-users- | bounces@haskell.org] On Behalf Of Cyril Schmidt | Sent: 23 January 2006 09:57 | To: glasgow-haskell-users@haskell.org | Subject: Re: Linking with C++ produced by Visual Studio .NET on Windows XP? | | I am far from being an expert, but I have seen no answer to your question | so far, so I'll tell how I'd do it (however ugly that might be). I don't | have a sample project, but it should be fairly easy to make it. | | 1. Make a DLL project in Visual Studio. VS will create a .vcproj and | .sln files for you. Add your C++ source files to this project. | | 2. Create a .def file for your DLL. It might look like | LIBRARY MyDLL | EXPORTS | function1 | function2 | | where function1 and function2 are the names of the C++ functions that | you want to invoke from Haskell (there can be more of them, of course), | MyDLL is the name of your DLL. | | 3. Create an import library that can be used by ghc: | dlltool -d MyDLL.def -l libMyDLL.a | | where MyDLL.def is the name of the .def file, libMyDLL.a is the import | library. | | 4. Link your Haskell project, adding the library: | ghc --make main.hs -optl-lMyDLL -optl-L. | (-optl switch passes its argument as an option to the linker). | | Hope this helps. | | Cheers, | | Cyril | | ___ | | >Hi - | >I'm wondering if anyone has a simple Visual Studio .NET C++ project that | >would demonstrate how to link C++ with Haskell (or vice versa). Ie a .sln, | >.vcproj, .cpp, and .h file containing one C++ function and a Haskell file | >main.hs that calls this function, so that if I click on the .sln file and | >hit F6 the VS project will build then on the command line if I type | >ghc --make main.hs the Haskell program will be built so that when I type | >"main" on the command line it will run and call the C++ function. | | >Sorry if this all sounds too basic but I don't know how to compile C++ from | >the command line at all or how to use make files, and I need to use the | >Visual Studio compiler because my own C++ code relies on Microsoft | >extensions...

I added this to the FAQ list; please feel free to elaborate and correct. Linking to Visual Studio-generated code would be much easier if GHC were able to use Visual C++ as backend, instead of gcc (even Visual Haskell at the moment relies on gcc for C compilation). I have no idea, though, how much work it would be to make GHC able to compile via Visual C++. Cheers, Cyril ___ Simon Peyton-Jones wrote:
GHC now makes it easy for all users to contribute new documentation about GHC to help other users, by adding to the GHC documentation wiki. See the "Collaborative documentation" heading on http://haskell.org/haskellwiki/GHC:Documentation
Linking to C++ would be an ideal topic. It's a regular question, and not one of our strengths at GHC HQ!

Cyril Schmidt wrote:
I added this to the FAQ list; please feel free to elaborate and correct.
Linking to Visual Studio-generated code would be much easier if GHC were able to use Visual C++ as backend, instead of gcc (even Visual Haskell at the moment relies on gcc for C compilation).
I have no idea, though, how much work it would be to make GHC able to compile via Visual C++.
From what I remember of Simon's talk at ICFP04, at least the evil-mangler would probably need an overall.

I think that the C backend is heavily dependent on various GCC pragmas
but it should be relatively easy to do assembly backend that produces
MASM code.
Cheers,
Krasimir
2006/2/3, Geoffrey Alan Washburn
Cyril Schmidt wrote:
I added this to the FAQ list; please feel free to elaborate and correct.
Linking to Visual Studio-generated code would be much easier if GHC were able to use Visual C++ as backend, instead of gcc (even Visual Haskell at the moment relies on gcc for C compilation).
I have no idea, though, how much work it would be to make GHC able to compile via Visual C++.
From what I remember of Simon's talk at ICFP04, at least the evil-mangler would probably need an overall.
_______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Krasimir Angelov wrote:
I think that the C backend is heavily dependent on various GCC pragmas but it should be relatively easy to do assembly backend that produces MASM code.
That's something I'd like to do (or see somebody else do), if only to make debugging Haskell DLLs a bit easier; currently using gdb is rather less than pleasant. Cheers, Simon
participants (5)
-
Cyril Schmidt
-
Geoffrey Alan Washburn
-
Krasimir Angelov
-
Simon Marlow
-
Simon Peyton-Jones