2009-09-08 49 views
2

我正在调用一个wxWidgets控制台应用程序,我想通过CLR调用这个应用程序=一个C#DLL。不幸的是,应用程序在wxWidgets应用程序初始化代码中打嗝,因为OleInitialize失败。我看到的错误是弹出窗口,简单地声明“无法初始化OLE”。启用Common Lanuage Runtime后OleInitialize失败?

似乎这个问题通常是通过为应用程序的入口点应用一个指令来设置线程的公寓样式来避免的,但我真的正在努力寻找我正在寻找的入口点。我的C#代码是一个DLL:没有具体的入口点。用/ CLR编译的代码存在于链接到我的wxWidgets应用程序中的.lib中。 wxWidgets实际上在其代码中定义了WinMain,并允许我通过实现wxApp来覆盖行为。

其他建议包括禁用wxWidgets中的OLE支持,但在我的发行版中,2.8.6,将wxUSE_OLE, wxUSE_CLIPBOARD, wxUSE_DATAOBJ, wxUSE_DRAG_AND_DROP设置为0时,会在编译wxWidgets时创建无法解析的外部程序。

以前有没有遇到过这个,找到了有效的解决办法?任何人都可以提供我需要修改什么入口点的任何说明吗?

回答

1

正如我的问题所述,这是一个涉及C++应用程序和CLR默认值之间的线程样式设置的问题。这显然是一个错误,曾几何时,而微软也发布了一个补丁:

http://msdn.microsoft.com/en-us/library/s6bz81ya.aspx

重新编译可执行文件的使用与/ CLRTHREADATTRIBUTE启用CLR-的.lib:STA足以消除错误,我看到。