2009-08-18 11 views
16

Aggiornamento: Ho ottenere questo avviso quando si compila: sezioni multiple '.text' trovato con attributi diversiUso libs/DLL compilate in Linux/MinGW in Visual Studio

Ciao,

ho compilato alcune librerie (.a e .dll) in Linux usando il compilatore incrociato MinGW. Posso collegarmi con successo a loro (.a) in Visual Studio 2008. Tuttavia, quando viene eseguito (utilizzando .dll), termina con il puntatore dell'indirizzo che punta a indirizzi di memoria vuoti.

C'è un modo/un elenco di cose da fare che mi permetteranno di utilizzare queste librerie con successo in VC08?

Il compilatore genera croce

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

Grazie

risposta

3

Sembra a me come le due parti non si utilizza la stessa chiamata convenzione, il che significa che c'è un problema nel modo in cui sono state definite le funzioni di esportazione esportate.

gran lunga l'approccio più semplice sarebbe quella di definire le funzioni come extern "C" definendo le funzioni esportate come segue:

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

Ho avuto "C" extern nell'importazione dell'intestazione. – jameszhao00

+0

Ho appena notato. Ricevo più sezioni ".text" trovate con attributi diversi durante la compilazione. – jameszhao00