Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
symbol "symbol" zdefiniowany w filename_1.obj jest importowany przez funkcję "filename_2.obj" w funkcji "function"
Uwagi
__declspec(dllimport) został określony dla symbolu, mimo że symbol jest zdefiniowany w pliku obiektu na tym samym obrazie. Usuń modyfikator, __declspec(dllimport) aby rozwiązać to ostrzeżenie.
symbol to nazwa symbolu zdefiniowana na obrazie. funkcja to funkcja , która importuje symbol.
To ostrzeżenie nie jest wyświetlane podczas kompilowania przy użyciu /clr opcji.
Example
LNK4217 mogą wystąpić również w przypadku próby połączenia dwóch modułów, gdy zamiast tego należy skompilować drugi moduł z biblioteką importu pierwszego modułu.
// main.cpp
__declspec(dllimport) void func();
int main()
{
func();
return 0;
}
A następnie,
// tt.cpp
// compile with: /c
void func() {}
Próba skompilowania tych dwóch modułów, jak pokazano poniżej, spowoduje LNK4217:
cl.exe /c main.cpp tt.cpp
link.exe main.obj tt.obj
Aby naprawić błąd, po skompilowaniu dwóch plików przekaż tt.obj do lib.exe, aby utworzyć plik lib, a następnie połącz main.obj z plikiem tt.lib, jak pokazano poniżej:
cl.exe /c main.cpp tt.cpp
lib.exe tt.obj /export:func /def
link.exe main.obj tt.lib
Zobacz też
Ostrzeżenie narzędzi konsolidatora LNK4049
Ostrzeżenie narzędzi konsolidatora LNK4286
dllexport, dllimport