Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
nem lehet p/invoke-t létrehozni a "function_declaration" decorated_name esetében; a metaadatokban hiányzik a hívási konvenció
Megjegyzések
Amikor natív függvényt próbál meg egy tiszta képbe importálni, ne feledje, hogy az implicit hívási konvenciók különböznek a natív és a tiszta fordítások között. A tiszta képekről további információt a Tiszta és ellenőrizhető kód (C++/CLI) című témakörben talál.
A /clr:pure fordító beállítás elavult a Visual Studio 2015-ben, és nem támogatott a Visual Studio 2017-ben.
Példák
Ez a példakód egy exportált, natív függvényt tartalmazó összetevőt hoz létre, amelynek hívási konvencióját implicit módon __cdecl.
// LNK2031.cpp
// compile with: /LD
extern "C" {
__declspec(dllexport) int func() { return 3; }
};
Az alábbi példa egy tiszta ügyfelet hoz létre, amely a natív függvényt használja. A /clr:pure hívó konvenciója azonban __clrcall. Az alábbi példa LNK2031 hoz létre.
// LNK2031_b.cpp
// compile with: /clr:pure LNK2031.lib
// LNK2031 expected
extern "C" int func();
int main() {
return func();
}
Az alábbi példa bemutatja, hogyan lehet a natív függvényt tiszta képből felhasználni. Jegyezze meg az explicit __cdecl hívási konvenciót.
// LNK2031_c.cpp
// compile with: /clr:pure LNK2031.lib
extern "C" int __cdecl func();
int main() {
return func();
}