文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>C#平台互操作部署问题

C#平台互操作部署问题

时间:2010-12-01  来源:swnuwangyun

A.dll 是别人用VC6.0开发的,里面导出了一个类,没有源码。
B.dll 是对A.dll的一个包装,VC++2008开发,将类的成员函数包装成全局函数,并导出。
C.dll 是对B.dll的一个包装, C#开发,使用P/Invoke调用B.dll中的函数.
D.exe 是最终程序,引用了C.dll

后来用Depends.exe分析,发现最终Debug目录中的B.dll使用了MSVCR90D.dll,奇怪的是这个文件却找不到,在安装了VS的机器上,即使找不到也能运行.

查了一些资料有说MSVCR100.dll可能有一个BUG, 跟编译模式也有关系, 于是使用RELEASE编译, 问题解决,到处都能运行了.

继续用Depends.exe分析,发现Release模式下的B.dll使用了MSVCR90.dll, 少了一个D结尾,应该是调试版本和正式版本之分. 此时才想到装了VS的环境里面有很多用于调试的DLL,而这些D结尾的DLL在安装MS的VC++2008可分发包的时候是没有包含的,因此导致了问题.

所以,一定不要图省事,把DEBUG版本的拿出来给用户用. 我知道很多人有都有这个习惯,坏习惯!!! 如果不早点客服,以后早晚会付出更大的代价来发现由此导致的问题。

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载