0
,當我得到這個異常:未處理的異常調用我的CLR項目
在0x75374B32(KernelBase.dll)在 LogLoaderUnmanaged.exe未處理的異常:0xE0434352(參數:0x80070002, 00000000,00000000 ,0x00000000,0x74040000)。
當我打電話使用此代碼我的CLR項目(一個應用程序.exe類型的項目的一部分):
int _tmain(int argc, _TCHAR* argv[])
{
_tprintf_s(_T("Press enter to start logging messages."));
_getch();
std::string app("Application");
std::string domain("Domain");
std::string message("Message");
UnmanagedLoggerClient::LogError(Debug, app.c_str(), domain.c_str(), message.c_str());
_tprintf_s(_T("Done."));
}
的錯誤是在調用LOGERROR,這是在我的CLR DLL的報頭定義如下:
#ifdef UNMANAGEDLOGGERCLIENT_EXPORTS
#define WIN32PROJECT_API __declspec(dllexport)
#else
#define WIN32PROJECT_API __declspec(dllimport)
#endif
enum UnmanagedLogLevel
{
Debug = 0,
Error = 1
};
static class WIN32PROJECT_API UnmanagedLoggerClient
{
public:
static void LogError (UnmanagedLogLevel level, const char* app, const char* domain, const char* message);
};
在該實施方式的方法是非常簡單的:
void UnmanagedLoggerClient::LogError(UnmanagedLogLevel level, const char* app, const char* domain, const char* message)
{
LoggerClient::LogLevel logLevel = static_cast<LoggerClient::LogLevel>(level);
LoggerClient::Logger::LogError(logLevel, gcnew String(app), gcnew String(domain), gcnew String(message), DateTime::Now);
}
任何想法爲什麼發生這種情況?我不是一個真正的C++傢伙,我還沒有找到任何有用的信息在網上搜索這個問題。非常感謝您的任何意見!
@HansPassant - 你是英雄。我感到非常愚蠢,不檢查0x80070002代表什麼。這正是它不工作的原因。輸出目錄與所有依賴關係所在的二進制目錄不同。請將您的答案作爲解決方案發布,以便我可以將其設置爲正確的答案! – Alexandru