日期:2014-05-18  浏览次数:20690 次

关于c#调用c++写的一个DLL的问题
我用VS2010 建立了一个项目 其中用
[DllImport("regedit.dll", EntryPoint = "SURE_RegeditSign")]
  public static extern bool SURE_RegeditSign( string appId, string regPath);
调用了一个C++编写的dll,
在安装了vc++6.0的情况下能够正常调用运行 ,没有问题 
但是当把VC++6.0卸载以后就出错了
未处理 System.DllNotFoundException
  Message=无法加载 DLL“regedit.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。
这个情况怎么解决 是不是我调用的不对 ?我想直接添加引用 添加不了,
我是新手 很多都不懂 请大神帮忙

------解决方案--------------------
您可以考虑安装vc6.0的运行库,一般情况下,vc写的dll,如果电脑上没有安装vc程序的话,都需要安装vc运行库,这个运行库会有一些dll依赖的库,所以这可能是造成错误的原因。现把vc6.0运行库放上,您可以试试看。没找到怎么放附件,名字为msxml6.msi,如果找不到,发邮件,我传给您。
------解决方案--------------------
如果你有vc6.0那个库 的源代码,重新编译选择静态链接vc运行库,就不需要安装了vc++6.0
------解决方案--------------------
是的,用VS的话Build选项里会有。实际上就是把一些必备的库一起打包,最后的dll size会大一些
探讨
2楼的方法试了没用啊 还是原来的情况
3楼说的源代码指的是那个DLL的工程的源代码吗?那个我有 ,但是你说的重新编译选择静态链接vc运行库,具体怎么操作 我不怎么会c++ ,对vc++6.0用的比较少 是指重新生成一个DLL文件 替换原来那个吗