Я получаю это исключение:Необработанное исключение при KernelBase.dll при запуске моего CLR проекта
Необработанное исключение в 0x75374B32 (KernelBase.dll) в LogLoaderUnmanaged.exe: 0xE0434352 (параметры: 0x80070002, 0x00000000 , 0x00000000 , 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