Dela via


Varning för länkverktyg LNK4217

symbolen "symbol" som definieras i "filename_1.obj" importeras av "filename_2.obj" i funktionen "funktion"

Anmärkningar

__declspec(dllimport) angavs för en symbol trots att symbolen definieras i en objektfil i samma bild. __declspec(dllimport) Ta bort modifieraren för att lösa den här varningen.

symbolen är det symbolnamn som definieras i bilden. funktionen är funktionen som importerar symbolen.

Den här varningen visas inte när du kompilerar med hjälp av alternativet /clr .

Example

LNK4217 kan också inträffa om du försöker länka ihop två moduler, när du i stället ska kompilera den andra modulen med importbiblioteket för den första modulen.

// main.cpp
__declspec(dllimport) void func();

int main()
{
    func();
    return 0;
}

Och sen,

// tt.cpp
// compile with: /c
void func() {}

Om du försöker kompilera dessa två moduler, vilket visas här, resulterar det i LNK4217:

cl.exe /c main.cpp tt.cpp
link.exe main.obj tt.obj

Åtgärda felet genom att skicka tt.obj till lib.exe för att skapa en .lib-fil efter kompileringen av de två filerna och länka sedan main.obj med tt.lib som du ser här:

cl.exe /c main.cpp tt.cpp
lib.exe tt.obj /export:func /def
link.exe main.obj tt.lib

Se även

Linker Tools Varning LNK4049
Linker Tools Varning LNK4286
dllexport, dllimport