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.
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çonOriginalL'auteur sansub | 2013-09-26
Vous devez vous connecter pour publier un commentaire.
J'avais essayer de changer de projet Visual Studio de configuration. Sous Général > Common Language Runtime prend en charge l'ensemble
/clr
au lieu de/clr:pure
.OriginalL'auteur bluish