none
十万火急 WPF 调用 C++ 问题 RRS feed

  • 问题

  • System.DllNotFoundException 错误

    我的程序调用了一个C++的库,按说,掉用C++的东西,只需要装一个MicroSoft Visual C++2010 X86 Redistributable 就可以了

    可是我的程序走到掉用C++的地方死活就是报错  (只有在没有开发环境的电脑上才会报错.在开发机上很正常)

    后来我发现,开发机上有一个 MicroSoft Visual C++2010 X86 Runtime - 10.0.30319 我测试了一下,果然是没有他,程序就崩溃

    求解....十万火急


    与我交流:点击这里给我发消息

    • 已移动 Annabella Luo 2012年7月11日 6:16 (发件人:Windows Presentation Foundation)
    2012年7月6日 9:48

答案

  • HeroHua0509你好,

    你的DLL用到了CRT中的函数,而您的目标机器上并没有安装相应的Runtime,所以产生了这样的异常。

    要想消除这个异常,有下面两种方法:
    1-]静态链接CRT库,在DLL项目的属性页上选择Project Properties->Configuration Properties->Code Generation->Runtime Library,并选择 "Multi-threaded (/MT)"选项,这样就不需要安装相应的CRT,重新生成DLL项目,在WPF项目中加以调用。
    2-]使用/MD选项的话,就要在目标机器上安装相应的Visual C++ 2010 x86 Redistributable Package。你可以参考这个链接上的package:http://www.microsoft.com/en-us/download/details.aspx?id=5555

    希望我的回复对你有所帮助!
    祝你好运


    Helen Zhao [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 Helen Zhao 2012年7月13日 4:51
    2012年7月11日 7:19
  • 楼上谢谢.我的问题解决了,虽然不知道是怎么回事,我把mfc100d.dll,msvcp100d.dll,msvcr100d.dll拷贝到了程序根目录就可以了.感谢感谢


    与我交流:点击这里给我发消息

    • 已标记为答案 Helen Zhao 2012年7月13日 4:51
    2012年7月11日 7:21

全部回复

  • 你好,HeroHua0509

    你的问题在于运行程序的电脑是否安装了适当的C++环境,所以这个WPF的技术没有太大关系,我把你的帖子移到C++论坛,以便你能得到更好的帮助:http://social.microsoft.com/Forums/zh-CN/visualcpluszhchs/threads

    谢谢你的支持和理解


    Annabella Luo[MSFT]
    MSDN Community Support | Feedback to us

    2012年7月11日 6:16
  • HeroHua0509你好,

    你的DLL用到了CRT中的函数,而您的目标机器上并没有安装相应的Runtime,所以产生了这样的异常。

    要想消除这个异常,有下面两种方法:
    1-]静态链接CRT库,在DLL项目的属性页上选择Project Properties->Configuration Properties->Code Generation->Runtime Library,并选择 "Multi-threaded (/MT)"选项,这样就不需要安装相应的CRT,重新生成DLL项目,在WPF项目中加以调用。
    2-]使用/MD选项的话,就要在目标机器上安装相应的Visual C++ 2010 x86 Redistributable Package。你可以参考这个链接上的package:http://www.microsoft.com/en-us/download/details.aspx?id=5555

    希望我的回复对你有所帮助!
    祝你好运


    Helen Zhao [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 Helen Zhao 2012年7月13日 4:51
    2012年7月11日 7:19
  • 楼上谢谢.我的问题解决了,虽然不知道是怎么回事,我把mfc100d.dll,msvcp100d.dll,msvcr100d.dll拷贝到了程序根目录就可以了.感谢感谢


    与我交流:点击这里给我发消息

    • 已标记为答案 Helen Zhao 2012年7月13日 4:51
    2012年7月11日 7:21
  • 还是拷贝的Debug版的,等你Release的时候就麻烦了。
    2012年7月11日 9:44
  • 生成安装包的时候,可以把这些DLL作为合并组建模块,就不会在里面显示了


    与我交流:点击这里给我发消息

    2012年7月14日 7:12
  • 的确,请问Release的时候怎么办


    与我交流:点击这里给我发消息

    2012年7月24日 8:44
  • 哦,我明白了,Debug版本可以拷贝DLL,如果是Release,安装这个就可以了....Visual C++ 2010 x86 Redistributable Package

    我以前是Debug版本没拷贝DLL,去安装了Visual C++ 2010 x86 Redistributable Package,结果老出错,现在明白了.谢谢各位


    与我交流:点击这里给我发消息

    2012年7月24日 9:00