西西河

主题:【求助】问个Visual C++的问题 -- 香山居士

共:💬11 🌺7
全看树展主题 · 分页首页 上页
/ 1
下页 末页
家园 【求助】问个Visual C++的问题

跟remote desktop connection 有关。

俺用的是Visual Studio 2005,code不是俺写的,俺只是debug。

问题在这行code,createArgs是个pointer。

m_pAppHub = pplicationHubFactory::NewInstance(createArgs);

如果我在本地机上(Windows XP)build,run,一点问题都没有。如果我用另一台机子(Windows Vista)通过remote desktop connection 联这台机子,build没问题,run到这行就会产生

An unhandled exception of type 'System.TypeInitializationException'

我查过,在两种状况下运行时createArgs里面各个component的值完全相同。我在网上google了两天,不得要领。

谢谢大家了。

家园 偶在4年前用过vc,呵呵。

vs2005这么新的东东可是没碰过。

家园 遇到过类似情况吗?

make a guess?

家园 我猜: handle掉 unhandled exception

应该就可以了的

根据java的handle所有exception理论。

家园 可是那个function我没有source code

改不了。

家园 检查运行时加载的函数库

看看在两种情况下是否调用同样的函数库.

http://www.codeproject.com/KB/DLL/displayloadedmodules.aspx

远程桌面有没有使用一些本地的界面功能?看起来像一个Vista的漏洞.用看另一个XP远程联结XP来看看,是否问题依然存在。

我没用过Vista, 这只是我的推测.

家园 还是根据java理论的推测

从error message里面知道 exception 的类型是 'System.TypeInitializationException'

在程序中,是这一行 m_pAppHub = pplicationHubFactory::NewInstance(createArgs); 产生的这个exception

那么把它包到try catch里面就算是handle了

try{

m_pAppHub = pplicationHubFactory::NewInstance(createArgs);

}

catch(System.TypeInitializationException e){

// 随便干点啥或者啥也不干

}

C++我不熟,以上推测全部来自java,希望有所帮助。

家园 我估计

你这个程序用到了什么第三方的库,在你本机启动的时候,这个库的路径被加到了Path里,所以运行没问题

远程的时候,启动配置文件可能不一样,这个路径没有加进来,程序找不到

家园 createArgs是不是个com对象接口的指针?

有没有考虑com的marshal,unmarshal问题,中文一般是叫列集,散列吧。好像如果要在不同的套间之间传递com接口指针,是要marshal,unmarshal的。

我这只是一种参测。

家园 这个应该是managed code引起的

System.TypeInitializationException似乎是一个.net framework的异常,所以我怀疑中间调用了c#的code,如果是c++的异常,那么至少也应该是'System::TypeInitializationException'。你可以从这个方向上去看。

家园 这个恐怕和运行权限有关。

你这个application多半调用了某个没有full trust的assembly,所以远程运行的时候会出问题。

全看树展主题 · 分页首页 上页
/ 1
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河