Je ne peux pas compiler une solution en raison de “l'Erreur LNK2028: non résolus jeton...”

J'ai une dll programmé en C++, et un exe programmé en Visual C++.

J'ai les fonctions de la dll a déclaré que:

string __declspec( dllexport ) ConfigureHAT(T_STRING pathFile);

Et dans le projet exe-je inclure tous les en-têtes des fichiers et le fichier dll.

J'appelle la fonction dans la dll:

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

Et quand le projet exécutable est compilé, il échoue avec des erreurs:

1>HATdllTester.obj : error LNK2028: non résolus jeton (0A000317) "class
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?$allocator@D@2@@std@@V12@@Z)
référencé dans la fonction "private: void __clrcall
HATdllTester::mainWindow::buttonConfigure_Click(classe System::Object
^,de la classe System::EventArgs ^)"
(?buttonConfigure_Click@mainWindow@HATdllTester@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z)

1>AssemblyInfo.obj : error LNK2028: non résolus jeton (0A000316) "class
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?$allocator@D@2@@std@@V12@@Z)
référencé dans la fonction "private: void __clrcall
HATdllTester::mainWindow::buttonConfigure_Click(classe System::Object
^,de la classe System::EventArgs ^)"
(?buttonConfigure_Click@mainWindow@HATdllTester@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z)

1>AssemblyInfo.obj : error LNK2019: symbole externe non résolu "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?$allocator@D@2@@std@@V12@@Z)
référencé dans la fonction "private: void __clrcall
HATdllTester::mainWindow::buttonConfigure_Click(classe System::Object
^,de la classe System::EventArgs ^)"
(?buttonConfigure_Click@mainWindow@HATdllTester@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z)

1>HATdllTester.obj : error LNK2001: symbole externe "de la 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?$allocator@D@2@@std@@V12@@Z)

Quelqu'un peut-il m'aider?
J'ai lu beaucoup de messages similaires, avec le même message d'erreur, mais on ne résout mon problème.

Grâce.

MODIFIER

Enfin, je résoudre le problème, y compris la .lib le fichier généré dans le projet de dll dans les Propriétés du Projet -> Linker -> Input -> Dépendances Supplémentaires.

n'VC++ permet l'utilisation de symboles C++ dll ? Autant que je sache, vous devez exporter le symbole en C pour qu'il fonctionne (c'est à dire extern "C" { /* declaration */ })
Êtes-vous en lien avec la .lib généré à côté de la .dll? (p.s: de retour d'un std::string à travers la limite d'une DLL est une très mauvaise idée.)
Oui, je suis un lien avec la .lib. Pourquoi est une très mauvaise idée de retourner un std:chaîne de caractères? Je ne le savais pas.
Cette fonction doit être déclarée __declspec(dllimport) dans votre projet. Vérifiez la macro soupe de cette réponse.
Merci, Vous avez sauvé mon projet avec la extern soupçon

OriginalL'auteur sansub | 2013-09-26