Sdílet prostřednictvím


/ 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.

Nastavení této možnosti linker ve vývojovém prostředí Visual Studio

  1. Otevřete dialogové okno projektu Stránky vlastností.Další informace naleznete v tématu Setting Visual C++ Project Properties.

  2. Klepněte Linker složky.

  3. Klepněte příkazového řádku stránky vlastností.

  4. Zadejte možnost do Další možnosti pole.

Programově nastavit tuto možnost linker

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);
}
  
  

Viz také

Referenční dokumentace

Nastavení možností Linker

Možnosti Linker