首页 新闻 搜索 专区 学院

关于C++调用WPF打包成的DLL的问题

0
悬赏园豆:20 [待解决问题]

注意!不是WPF调用C++!我们有个项目一开始的时候是MFC写的。后来由于一些原因需要用WPF写一个模块。集成的时候,将WPF项目打包成DLL,由原来的系统去调用。涉及到了VC调用WPF的问题。我开了个测试项目试了一下,结果如下:
这个是两个项目:

 

这个是WPF唯一的主类:

 

这个是C++调用的Main类:

 

调试结果:

 

这个问题是怎么回事,我曾经想过在WPF的那个类中用STAThread特性,但是我没有申明自定义方法,完全用不上。

不要怀疑我的DLL文件位置啥的。不可能有问题。我用C++调用C#的DLL完全没问题。放在同一个地方的。

JoiT的主页 JoiT | 初学一级 | 园豆:182
提问于:2015-07-16 20:06
< >
分享
所有回答(1)
0

调用线程必须为 STA,看语句:MainWindow ^w = ncnew MainWindow(),调用方为 int main() 函数,因此这里的调用线程是你的 C++ 控制台程序,所以你在 WPF 的那个类上使用特性是没用的(无论是否可以使用)。解决的办法是将 MainWindow ^w = gcnew MainWindow() 语句放到一个具有 STA 的线程中去。比如:

 

CoInitializeEx (NULL, COINIT_APARTMENTTHREADED);

MainWindow ^w = gcnew MainWindow();

getchar();

CoUninitialize();

Launcher | 园豆:45045 (高人七级) | 2015-07-17 09:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册