jameszhao00
jameszhao00

Reputation: 7301

Using libs/dlls compiled in Linux/MinGW in Visual Studio

Update: I get this warning when compiling: multiple '.text' sections found with different attributes

Hi,

I've compiled some libraries (.a and .dll) in Linux using the MinGW Cross Compiler. I can successfully link against them (.a) in Visual Studio 2008. However, when it runs (using .dll), it terminates with the address pointer pointing at empty memory addresses.

Is there a way/a list of things to do that will allow me to use those libraries successfully in VC08?

The cross compiler generates

  1. *.dll.a
  2. *.dll

Thanks

Upvotes: 16

Views: 16168

Answers (2)

jameszhao00
jameszhao00

Reputation: 7301

Found it.

http://www.mingw.org/wiki/MSVC_and_MinGW_DLLs

You have to have a def file and use the VC's lib tool to generate an import library.

Upvotes: 7

jussij
jussij

Reputation: 10580

It sounds to me like the two parties are not using the same calling convention, meaning there is a problem in the way the exported dll functions have been defined.

By far the simplest approach would be to define the functions as extern "C" by defining the exported functions as follows:

extern "C"
{
  int  MyExportedFunction(char *buffer, int length);
  void MyOtherFunction();
};

Upvotes: 3

Related Questions