链接到DLL的未处理异常

时间:2013-03-28 03:13:54

标签: c++ multithreading winapi console-application ace

当我链接到我创建的DLL时,我遇到了问题。抛出的异常是Unhandled exception at 0x000007FA17461069 (ntdll.dll)。奇怪的是,只有在我在win32应用程序中链接DLL但不在win32控制台应用程序中链接时才会发生这种情况。问题似乎是处理线程创建的问题。

调用堆栈如下:

msvcr110d.dll!_callthreadstartex() Line 354            C
msvcr110d.dll!_threadstartex(void * ptd) Line 337      C

DLL包含使用操作系统I / O完成端口的ACE proactor框架的实现。它在控制台应用程序中运行良好,但在win32窗口化应用程序中运行不正确。

任何帮助都将不胜感激。

编辑:根据以下评论的要求:

抛出异常的代码行是ACE_Service_Config::open(GetCommandLineA());

我使用ACE配置框架,因此我使用svc.conf文件动态加载我的DLL。这是唯一需要写入控制台程序的main函数的代码行。

我在捕获WM_CREATE消息后尝试编写此行。它崩溃了。

1 个答案:

答案 0 :(得分:2)

当您创建控制台应用程序时,ACE将重新定义main以确保它已正确初始化。在制作win32 windows应用程序时,这个技巧不起作用。您必须自己调用ACE :: init()和ACE :: fini(),有关如何执行此操作的示例,请参阅ACE_wrappers / tests / ACE_Init_Test.cpp。