Upozornění linkerů LNK4217
symbol 'symbol' definovaný v 'filename_1.obj' je importován 'filename_2.obj' ve funkci 'function'
__declspec(dllimport) byl zadán pro symbol, i když je symbol definován v souboru objektu ve stejném obrázku. __declspec(dllimport)
Pokud chcete toto upozornění vyřešit, odeberte modifikátor.
Poznámky
symbol je název symbolu, který je definován v rámci obrázku. funkce je funkce, která importuje symbol.
Toto upozornění se nezobrazí při kompilaci pomocí možnosti /clr .
LNK4217 může dojít také v případě, že se pokusíte propojit dva moduly dohromady, když místo toho byste měli zkompilovat druhý modul s knihovnou importu prvního modulu.
// main.cpp
__declspec(dllimport) void func();
int main()
{
func();
return 0;
}
A pak,
// tt.cpp
// compile with: /c
void func() {}
Pokus o kompilaci těchto dvou modulů, jak je znázorněno tady, způsobí LNK4217:
cl.exe /c main.cpp tt.cpp
link.exe main.obj tt.obj
Chybu opravíte tak, že po kompilaci dvou souborů předáte tt.obj lib.exe vytvořit soubor .lib a pak propojíte main.obj s tt.lib, jak je znázorněno tady:
cl.exe /c main.cpp tt.cpp
lib.exe tt.obj /export:func /def
link.exe main.obj tt.lib
Viz také
Upozornění linkerů LNK4049
Upozornění linkerů LNK4286
dllexport, dllimport