/CLRSUPPORTLASTERROR (المحافظة الأخيرة رمز خطأ للاستدعاءات PInvoke)

/CLRSUPPORTLASTERROR، التي هو على بشكل افتراضي، يحتفظ رمز الخطأ الأخير استدعاء من خلال mechanهوm P/Invoke، والذي يسمح لك باستدعاء الدوال الأصلية في DLLS، من تعليمات برمجية المترجمة باستخدام الدالات**/clr**.

/CLRSUPPORTLASTERROR{:NO | SYSTEMDLL}

ملاحظات

مع الاحتفاظ بخطأ آخر تعليمات برمجية يعني انخفاض في الأداء. إذا كنت لا تريد تتطلب تأثير الأداء مع الاحتفاظ بخطأ آخر تعليمات برمجية، ارتباط مع /CLRSUPPORTLASTERROR:NO.

يمكنك تصغير تأثير الأداء بواسطة الارتباط مع /CLRSUPPORTLASTERROR:SYSTEMDLL، الذي يحافظ على فقط رمز الخطأ أخير للوظائف في النظام ملفات DLL. يتم تعريف ملف DLL لنظام كأحد الإجراءات التالية:

aclui.dll

activeds.dll

adptif.dll

advapi32.dll

asycfilt.dll

authz.dll

avicap32.dll

avifil32.dll

cabinet.dll

clusapi.dll

comctl32.dll

comdlg32.dll

comsvcs.dll

credui.dll

crypt32.dll

cryptnet.dll

cryptui.dll

d3d8thk.dll

dbgeng.dll

dbghelp.dll

dciman32.dll

dnsapi.dll

الملف dsprop.dll

dsuiext.dll

gdi32.dll

glu32.dll

hlink.dll

icm32.dll

imagehlp.dll

imm32.dll

iphlpapi.dll

iprop.dll

kernel32.dll

ksuser.dll

loadperf.dll

lz32.dll

mapi32.dll

mgmtapi.dll

mobsync.dll

mpr.dll

mprapi.dll

mqrt.dll

msacm32.dll

mscms.dll

msi.dll

msimg32.dll

msrating.dll

mstask.dll

msvfw32.dll

mswsock.dll

mtxex.dll

nddeapi.dll

netapi32.dll

npptools.dll

ntdsapi.dll التي تم

ntdsbcli.dll

ntmsapi.dll

odbc32.dll

odbcbcp.dll

ole32.dll

oleacc.dll

oleaut32.dll

oledlg.dll

opengl32.dll

pdh.dll

powrprof.dll

qosname.dll

استعلام.dll

rasapi32.dll

rasdlg.dll

rassapi.dll

resutils.dll

riched20.dll

rpcns4.dll

rpcrt4.dll

rtm.dll

rtutils.dll

scarddlg.dll

secur32.dll

sensapi.dll

setupapi.dll

sfc.dll

shell32.dll

shfolder.dll

shlwapi.dll

sisbkup.dll

snmpapi.dll

srclient.dll

sti.dll

tapi32.dll

نسبة استخدام الشبكة.dll

url.dll

urlmon.dll

user32.dll

userenv.dll

usp10.dll

uxtheme.dll

vdmdbg.dll

الإصدار.dll

winfax.dll

winhttp.dll

wininet.dll

winmm.dll

winscard.dll

wintrust.dll

wldap32.dll

wow32.dll

ws2_32.dll

wsnmp32.dll

wsock32.dll

wtsapi32.dll

xolehlp.dll

ملاحظة

مع الاحتفاظ بخطأ آخر هو غير معتمد للدالات غير مدار المستهلكة إلى تعليمات برمجية CLR في وحدة نمطية? نفسها.

إلى التعيين هذا خيار الرابط في بيئة تطوير ‏‫Visual Studio

  1. افتح مربع الحوار صفحات الخصائص للمشروع. للحصول على تفاصيل، راجع إعداد خصائص مشروع Visual C++‎.

  2. انقر فوق المجلد الرابط.

  3. انقر فوق من سطر الأوامر خاصية الصفحة.

  4. قم بكتابة خيار في المربع خيارات إضافى.

إلى التعيين الرابط هذا خيار برمجياً

مثال

نموذج التالي بتعريف ارتباط ديناميكي أصلي مع واحد تصدير دالة تقوم بتعديل الخطأ أخير.

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

نموذج التالي يستهلك مكتبة الارتباط الديناميكي، demonstrating كيفية إلى استخدام /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);
}

GetLastError for application call failed (127). GetLastError for system call succeeded (183). 

راجع أيضًا:

المرجع

تعيين خيارات الرابط

خيارات الرابط