启用Common Lanuage Runtime时OleInitialize失败?

时间:2009-09-08 20:50:40

标签: c++ clr wxwidgets

我正在研究一个wxWidgets控制台应用程序,我希望通过CLR从一个C#DLL调用它。不幸的是,应用程序在wxWidgets应用程序初始化代码中出现问题,因为OleInitialize失败了。我看到的错误是一个弹出窗口,只是声明“无法初始化OLE。”

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

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

以前是否喜欢遇到这个并找到了有效的工作?任何人都可以澄清我需要修改的入口点吗?

1 个答案:

答案 0 :(得分:1)

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

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

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