/ CLRSUPPORTLASTERROR (zachovat poslední kód chyby volání PInvoke)
/CLRSUPPORTLASTERROR, která je ve výchozím, zachová poslední chybový kód funkce volané prostřednictvím P/Invoke mechanismus, který umožňuje volání nativní funkce v knihovnách DLL, z kódu kompilována s /clr.
/CLRSUPPORTLASTERROR{:NO | SYSTEMDLL}
Poznámky
Zachování poslední chybový kód znamená snížení výkonu.Pokud nechcete utrpět výkon dopad zachování poslední kód chyby, propojit s /CLRSUPPORTLASTERROR:NO.
Vliv na výkon můžete minimalizovat propojením s /CLRSUPPORTLASTERROR:SYSTEMDLL, které pouze zachová kód poslední chyby funkce v systému knihoven DLL.Systémové knihovny DLL je definován jako jeden z následujících:
SE.KNIHOVNA DLL |
ACTIVEDS.KNIHOVNA DLL |
ADPTIF.KNIHOVNA DLL |
ADVAPI32.KNIHOVNA DLL |
ASYCFILT.KNIHOVNA DLL |
AUTHZ.KNIHOVNA DLL |
AVICAP32.KNIHOVNA DLL |
AVIFIL32.KNIHOVNA DLL |
SOUBOR CAB.KNIHOVNA DLL |
CLUSAPI.KNIHOVNA DLL |
COMCTL32.KNIHOVNA DLL |
COMDLG32.KNIHOVNA DLL |
COMSVCS.KNIHOVNA DLL |
CREDUI.KNIHOVNA DLL |
CRYPT32.KNIHOVNA DLL |
CRYPTNET.KNIHOVNA DLL |
CRYPTUI.KNIHOVNA DLL |
D3D8THK.KNIHOVNA DLL |
DBGENG.KNIHOVNA DLL |
DBGHELP.KNIHOVNA DLL |
DCIMAN32.KNIHOVNA DLL |
DNSAPI.KNIHOVNA DLL |
DSPROP.KNIHOVNA DLL |
DSUIEXT.KNIHOVNA DLL |
SOUBORU GDI32.KNIHOVNA DLL |
GLU32.KNIHOVNA DLL |
KNIHOVNA HLINK.KNIHOVNA DLL |
ICM32.KNIHOVNA DLL |
IMAGEHLP.KNIHOVNA DLL |
IMM32.KNIHOVNA DLL |
IPHLPAPI.KNIHOVNA DLL |
IPROP.KNIHOVNA DLL |
KERNEL32.KNIHOVNA DLL |
KSUSER.KNIHOVNA DLL |
LOADPERF.KNIHOVNA DLL |
LZ32.KNIHOVNA DLL |
MAPI32.KNIHOVNA DLL |
FUNKCI MGMTAPI.KNIHOVNA DLL |
PŘÍKAZ MOBSYNC.KNIHOVNA DLL |
MPR.KNIHOVNA DLL |
MPRAPI.KNIHOVNA DLL |
MQRT.KNIHOVNA DLL |
MSACM32.KNIHOVNA DLL |
MSCMS.KNIHOVNA DLL |
MSI.KNIHOVNA DLL |
MSIMG32.KNIHOVNA DLL |
MSRATING.KNIHOVNA DLL |
MSTASK.KNIHOVNA DLL |
SOUBORU MSVIDEO.KNIHOVNA DLL |
MSWSOCK.KNIHOVNA DLL |
MTXEX.KNIHOVNA DLL |
NDDEAPI.KNIHOVNA DLL |
NETAPI32.KNIHOVNA DLL |
NPPTOOLS.KNIHOVNA DLL |
ROZHRANÍ NTDSAPI.KNIHOVNA DLL |
NTDSBCLI.KNIHOVNA DLL |
NTMSAPI.KNIHOVNA DLL |
ODBC32.KNIHOVNA DLL |
ODBCBCP.KNIHOVNA DLL |
OLE32.KNIHOVNA DLL |
OLEACC.KNIHOVNA DLL |
VYŽADOVANÁ.KNIHOVNA DLL |
OLEDLG.KNIHOVNA DLL |
OPENGL32.KNIHOVNA DLL |
PROTOKOL PDH.KNIHOVNA DLL |
SOUBOR POWRPROF.KNIHOVNA DLL |
QOSNAME.KNIHOVNA DLL |
DOTAZ.KNIHOVNA DLL |
RASAPI32.KNIHOVNA DLL |
RASDLG.KNIHOVNA DLL |
RASSAPI.KNIHOVNA DLL |
RESUTILS.KNIHOVNA DLL |
RICHED32.KNIHOVNA DLL |
RPCNS4.KNIHOVNA DLL |
RPCRT4.KNIHOVNA DLL |
RTM.KNIHOVNA DLL |
RTUTILS.KNIHOVNA DLL |
SCARDDLG.KNIHOVNA DLL |
SECUR32.KNIHOVNA DLL |
SENSAPI.KNIHOVNA DLL |
SETUPAPI.KNIHOVNA DLL |
SFC.KNIHOVNA DLL |
SHELL32.KNIHOVNA DLL |
SHFOLDER.KNIHOVNA DLL |
SHLWAPI.KNIHOVNA DLL |
SISBKUP.KNIHOVNA DLL |
SNMPAPI.KNIHOVNA DLL |
SRCLIENT.KNIHOVNA DLL |
STI.KNIHOVNA DLL |
TAPI32.KNIHOVNA DLL |
PROVOZ.KNIHOVNA DLL |
ADRESA URL.KNIHOVNA DLL |
URLMON.KNIHOVNA DLL |
USER32.KNIHOVNA DLL |
USERENV.KNIHOVNA DLL |
USP10.KNIHOVNA DLL |
UXTHEME.KNIHOVNA DLL |
VDMDBG.KNIHOVNA DLL |
VERZE.KNIHOVNA DLL |
WINFAX.KNIHOVNA DLL |
SLUŽBA WINHTTP.KNIHOVNA DLL |
ROZHRANÍ WININET.KNIHOVNA DLL |
WINMM.KNIHOVNA DLL |
WINSCARD.KNIHOVNA DLL |
WINTRUST.KNIHOVNA DLL |
WLDAP32.KNIHOVNA DLL |
WOW32.KNIHOVNA DLL |
WS2_32.DLL |
WSNMP32.KNIHOVNA DLL |
WSOCK32.KNIHOVNA DLL |
WTSAPI32.KNIHOVNA DLL |
XOLEHLP.KNIHOVNA DLL |
[!POZNÁMKA]
Poslední chyba zachování nespravované funkcí, které jsou spotřebovány podle kódu CLR, do téhož modulu není podporován.
- Další informace naleznete v tématu /CLR (kompilace společné Language Runtime).
Nastavení této možnosti linker ve vývojovém prostředí Visual Studio
Otevřete dialogové okno projektu Stránky vlastností.Další informace naleznete v tématu Setting Visual C++ Project Properties.
Klepněte Linker složky.
Klepněte příkazového řádku stránky vlastností.
Zadejte možnost do Další možnosti pole.
Programově nastavit tuto možnost linker
- Viz téma AdditionalOptions.
Příklad
Následující příklad definuje nativní knihovny DLL s jedna exportovaná funkce, která upravuje poslední chyba.
// CLRSUPPORTLASTERROR_dll.cpp
// compile with: /LD
#include <windows.h>
#include <math.h>
#pragma unmanaged
__declspec(dllexport) double MySqrt(__int64 n) {
SetLastError(DWORD(-1));
return sqrt(double(n));
}
Následující ukázka spotřebovává knihovny DLL ukázkou použití /CLRSUPPORTLASTERROR.
// CLRSUPPORTLASTERROR_client.cpp
// compile with: /clr CLRSUPPORTLASTERROR_dll.lib /link /clrsupportlasterror:systemdll
// processor: x86
#include <windows.h>
#include <wininet.h>
#include <stdio.h>
#include <math.h>
#pragma comment(lib, "wininet.lib")
double MySqrt(__int64 n);
#pragma managed
int main() {
double d = 0.0;
__int64 n = 65;
HANDLE hGroup = NULL;
GROUPID groupID;
DWORD dwSet = 127, dwGet = 37;
SetLastError(dwSet);
d = MySqrt(n);
dwGet = GetLastError();
if (dwGet == DWORD(-1))
printf_s("GetLastError for application call succeeded (%d).\n",
dwGet);
else
printf_s("GetLastError for application call failed (%d).\n",
dwGet);
hGroup = FindFirstUrlCacheGroup(0, CACHEGROUP_SEARCH_ALL,
0, 0, &groupID, 0);
dwGet = GetLastError();
if (dwGet == 183)
printf_s("GetLastError for system call succeeded (%d).\n",
dwGet);
else
printf_s("GetLastError for system call failed (%d).\n",
dwGet);
}