Delen via


Waarschuwing Linker Tools LNK4217

symbool 'symbool' dat is gedefinieerd in 'filename_1.obj' wordt geïmporteerd door 'filename_2.obj' in functie 'functie'

Opmerkingen

__declspec(dllimport) is opgegeven voor een symbool, ook al is het symbool gedefinieerd in een objectbestand in dezelfde afbeelding. Verwijder de __declspec(dllimport) wijzigingsfunctie om deze waarschuwing op te lossen.

symbool is de symboolnaam die in de afbeelding is gedefinieerd. functie is de functie die het symbool importeert.

Deze waarschuwing wordt niet weergegeven wanneer u compileert met behulp van de optie /clr .

Example

LNK4217 kan ook optreden als u probeert twee modules aan elkaar te koppelen. In plaats daarvan moet u de tweede module compileren met de importbibliotheek van de eerste module.

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

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

En dan,

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

Als u probeert deze twee modules te compileren, zoals hier wordt weergegeven, resulteert dit in LNK4217:

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

Als u de fout wilt oplossen, geeft u na het compileren van de twee bestanden tt.obj door aan lib.exe om een .lib-bestand te maken en koppelt u main.obj met tt.lib, zoals hier wordt weergegeven:

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

Zie ook

Linkerhulpprogramma's waarschuwingscode LNK4049
Linkerhulpprogramma's Waarschuwing LNK4286
dllexport, dllimport