Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
le symbole 'symbol' défini dans 'filename_1.obj' est importé par 'filename_2.obj' dans la fonction 'function'
Notes
__declspec(dllimport) a été spécifié pour un symbole même si le symbole est défini dans un fichier objet dans la même image. Supprimez le __declspec(dllimport) modificateur pour résoudre cet avertissement.
le symbole est le nom de symbole défini dans l’image. est la fonction qui importe le symbole.
Cet avertissement n’apparaît pas lorsque vous compilez à l’aide de l’option /clr .
Example
LNK4217 peut également se produire si vous tentez de lier deux modules ensemble, quand au lieu de cela, vous devez compiler le deuxième module avec la bibliothèque d’importation du premier module.
// main.cpp
__declspec(dllimport) void func();
int main()
{
func();
return 0;
}
Enfin,
// tt.cpp
// compile with: /c
void func() {}
Si vous tentez de compiler ces deux modules, comme indiqué ici, LNK4217 :
cl.exe /c main.cpp tt.cpp
link.exe main.obj tt.obj
Pour corriger l’erreur, après avoir compilé les deux fichiers, passez tt.obj à lib.exe pour créer un fichier .lib, puis liez main.obj avec tt.lib comme indiqué ici :
cl.exe /c main.cpp tt.cpp
lib.exe tt.obj /export:func /def
link.exe main.obj tt.lib
Voir aussi
Avertissement des outils Éditeur de liens LNK4049
Avertissement des outils Éditeur de liens LNK4286
dllexport, dllimport