2009-08-18 16 views
16

Update: mam to ostrzeżenie podczas kompilacji: sekcje wielokrotny „.text” gatunki z różnych atrybutówKorzystanie libs/DLL skompilowane w Linux/MinGW w Visual Studio

Cześć,

Zebraliśmy bibliotek (.a i .dll) w systemie Linux za pomocą kompilatora MinGW Cross. Mogę skutecznie połączyć się z nimi (.a) w Visual Studio 2008. Jednak, gdy działa (przy użyciu .dll), kończy się ze wskaźnikiem adresu wskazującym puste adresy pamięci.

Czy istnieje sposób/lista rzeczy do zrobienia, które pozwolą mi z powodzeniem używać tych bibliotek w VC08?

Krzyż kompilator generuje

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

Dzięki

Odpowiedz

3

To brzmi dla mnie jak obie strony nie korzystają z tego samego powołania konwencja, co oznacza, że ​​istnieje problem w sposobie zdefiniowania eksportowanych funkcji dll.

Zdecydowanie najprostszym rozwiązaniem byłoby zdefiniować funkcje jak extern „C” poprzez zdefiniowanie eksportowanych funkcji w następujący sposób:

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

Miałem extern "C" w importowaniu nagłówka. – jameszhao00

+0

Właśnie zauważyłem. Otrzymuję wiele sekcji ".text" o różnych atrybutach podczas kompilacji. – jameszhao00

Powiązane problemy