当前位置:编程学习 > C#/ASP.NET >>

求助!C#加载C++的dll,换了台机子就不能用了

是这样的,我界面是C#写的,算法核心是用C++封装成dll写的。
我在开发的机器上调试都没问题,然而当我把Debug文件夹打包拷到另一台电脑后,程序仍然能正常运行,但一旦出现要加载dll的地方就立刻出错。提示“无法加载DLL"XXX.dll"”,找不到指定模块。在线等 --------------------编程问答-------------------- 一起复制过去,与 *.exe 同一目录。 --------------------编程问答-------------------- 你的dll是不是还要注册? --------------------编程问答--------------------
引用 1 楼 ch_fb 的回复:
一起复制过去,与 *.exe 同一目录。

我显然一起复制了啊 --------------------编程问答-------------------- 你看下打包文件下有没有你用的DLL文件,如果没有肯定会出现无法加载 --------------------编程问答--------------------
引用 2 楼 pinyu 的回复:
你的dll是不是还要注册?


呃?什么注册的?不好意思不是很了解……
我在C++里就正常地编了几个导出函数而已 --------------------编程问答--------------------
引用 4 楼 lovetsfuer 的回复:
你看下打包文件下有没有你用的DLL文件,如果没有肯定会出现无法加载


有的 所以我很纳闷。跟系统有关系嘛?我开发的机器是Win7 拷贝到XP的机子上 --------------------编程问答--------------------
引用 5 楼 tzdxrrr 的回复:
引用 2 楼 pinyu 的回复:
你的dll是不是还要注册?


呃?什么注册的?不好意思不是很了解……
我在C++里就正常地编了几个导出函数而已

既然是自己写的 dll 而又不知道注册问题那就是不用注册的了。

试试复制 Release 目录,而非 Debug 目录,还有你在 C# 中 [Dll..] 行是怎么写的。 --------------------编程问答-------------------- 用的时候  先把DLL复制到Debug 然后再引用。。。 --------------------编程问答--------------------  regsvr32.exe注册一下,然后引用。也可以打包的时候放入系统目录下。 --------------------编程问答-------------------- 有相关的支持库在那台机器吗? --------------------编程问答-------------------- 有可能把c++安装一次,就可以使用了。 --------------------编程问答-------------------- 是不是没有安装VC++的XX包。 --------------------编程问答-------------------- 缺少VC的类库吧。 --------------------编程问答--------------------
引用 9 楼 i_point2011 的回复:
regsvr32.exe注册一下,然后引用。也可以打包的时候放入系统目录下。

注意平台和硬件.非托管对平台和硬件好象比较敏感吧.
--------------------编程问答-------------------- 可能一个32位系统,一个是64位系统吧,点项目属性都改成32位试试。 --------------------编程问答-------------------- 应该是你那台少安装了什么 --------------------编程问答-------------------- 路过学习,
一般这种情况 从两方面分析:
程序 和环境
程序,主要是 一些引用的路径了,有没有写死的地方
环境 就不用说了,用到什么引用 都需要装上 --------------------编程问答-------------------- 应该是环境问题,新机器少类库 --------------------编程问答-------------------- 同意18楼得说法!
一般来说知道加载dll的人绝对是不可以像上面说的引用路径的问题!
肯定是一些我们也没有见过的,应该是18楼说的一样! --------------------编程问答-------------------- 一个简单办法:
          用DEPENDS.EXE工具,看看你那个“无法加载DLL"XXX.dll”,工具里面有没有提示感叹号的。有的话,说明这个动态库依赖的相关库在这台机器上没有! --------------------编程问答-------------------- 你换的那台机器上应该没有C++的环境,问题的根源在于你调用的C++的dll文件有问题。 --------------------编程问答-------------------- 开始-运行 输入"regsvr32 绝对路径\dll" 确定
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,