2013-09-26 11 views
5

Ho una DLL programmata in C++ e un exe programmato in Visual C++.Non riesco a compilare una soluzione a causa di "Errore LNK2028: token non risolto ..."

ho le funzioni nella DLL dichiarate come:

string __declspec(dllexport) ConfigureHAT(T_STRING pathFile); 

E nel progetto exe includo tutti i file header e il file dll.

chiamo la funzione in dll:

string ret = ConfigureHAT("file.txt"); 

E quando il progetto eseguibile viene compilato, non riesce con i prossimi errori:

1> HATdllTester.obj: errore LNK2028: Token irrisolto (0A000317) "classe std :: basic_string, classe std :: allocator> __cdecl ConfigureHAT (classe std :: basic_string, classe std :: allocator>)" (? ConfigureHAT @@ $$ FYA? AV? $ basic_s tring @ DU? $ char_traits @ D @ std @@ V? $ allocatore @ D @ 2 std @@ V12 @@ Z) riferito nella funzione "privato: void __clrcall HATdllTester :: mainWindow :: buttonConfigure_Click (class System :: Object ^, classe System :: EventArgs ^)" (? buttonConfigure_Click @ @ MainWindow HATdllTester @@ $$ FA $ AAMXP $ AAVObject @ sistema @@ P $ AAVEventArgs @ 4 @@ Z)

1> AssemblyInfo.obj: errore LNK2028: non risolti del token (0A000316) "classe std :: basic_string, classe std :: allocator> __cdecl ConfigureHAT (classe std :: basic_string, classe std :: allocator>)" (ConfigureHAT @@ $$ FYA? AV? $ Basic_string @ DU? $ Char_traits @ D @ std @@ V? $ Allocatore @ D @ 2 std @@ V12 @@ Z) fatto riferimento nella funzione "private: void __clrcall HATdllTester :: :: MainWindow buttonConfigure_Click (classe System :: Object ^, classe System :: EventArgs ^)" (buttonConfigure_Click @ @ MainWindow HATdllTester @@ $$ FA $ AAMXP $? AAVObject @ sistema @@ P $ AAVEventArgs @ 4 @@ Z)

1> AssemblyInfo.obj: errore LNK2019: simbolo esterno non risolto "classe std :: basic_string, classe std :: allocator> __cdecl ConfigureHAT (classe std :: basic_string, classe std :: allocator>) " (? ConfigureHAT @@ $$ FYA? AV? $ basic_string @ DU? $ char_traits @ D @ std @@ V? $ allocatore @ D @ 2 @@ std @@ V12 @@ Z) a cui si fa riferimento nella funzione "private: void __clrcall HATdllTester :: mainWindow :: buttonConfigure_Click (classe System :: Oggetto ^, classe System :: EventArgs ^) " (? ButtonConfigure_Click @ mainWindow @ HATdllTester @@ $$ FA $ AAMXP $ AAVObject @ System @@ P $ AAVEventArgs @ 4 @@ Z)

1> HATdllTester.obj: errore LNK2001: simbolo esterno "classe std :: basic_string, classe std :: allocator> __cdecl ConfigureHAT (classe std :: basic_string, classe std: : allocator>) " (? ConfigureHAT @@ $$ FYA? AV? $ basic_string @ DU? $ char_traits @ D @ std @@ V? $ allocatore @ D @ 2 std @@ V12 @@ Z)

Qualcuno può aiutarmi? Ho letto molti messaggi simili con lo stesso errore, ma nessuno risolve il mio problema.

Grazie.

EDIT

Infine, ho risolto il problema incluso il file LIB generato nel progetto DLL in Proprietà progetto -> Linker -> -> ingresso Dipendenze aggiuntive.

+1

VC++ consente l'uso di simboli C++ in dll? AFAIK, devi esportare il simbolo in C affinché funzioni (es. "Extern" C "{/ * declaration * /}') – Geoffroy

+3

Stai collegando con '.lib' generato insieme a' .dll'? (p.s: restituire un 'std :: string' su un limite della DLL è una pessima idea.) – Simple

+1

Sì, sto collegando il .lib. Perché è una pessima idea restituire una stringa: stringa? Non lo sapevo – sansub

risposta

3

Vorrei provare a modificare la configurazione del progetto di Visual Studio. In Generale> Supporto runtime linguaggio comune impostato /clr anziché /clr:pure.