none
First chance of exception RRS feed

  • 问题

  • String* pDllFileName=new String(S"d:\\TrueSafe\\TrueSafe\\Debug\\TrueShdw.dll");
    Assembly * pAssy= Assembly::LoadFrom(pDllFileName);

    First-chance exception at 0x74d9b760 in TrueSafe.exe: Microsoft C++ exception: HRException at memory location 0x04d5ef4c..

    2014年10月27日 3:33

全部回复

  • 你好:

         你好像是在用C++\CLI来编程,我看了Assembly::LoadFrom 的文档http://msdn.microsoft.com/en-us/library/1009fa28(v=vs.110).aspx 

    首先该方法传入的参数类型应该是String^, 而你传的是String*类型,C++\CLI里是不能直接使用的,需要将String*类型转化为String^ 才行。

    试一下直接用String^:

    String^ pDllFileName=gcnew String(S"d:\\TrueSafe\\TrueSafe\\Debug\\TrueShdw.dll");

    或者将你的String*转化一下:

    http://msdn.microsoft.com/en-us/library/ms235219.aspx

    Shu Hu


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年10月28日 2:27
  • 编译选项 CLR/old syntax

    就是说可以用标准C++的语法,写出CLR(或者C++/CLI)的程序

    如果编译选项里选择 clr,则只能用String^,而不能用String*

    您的答案并不能解决问题。

    谢谢您!

    2014年10月28日 3:05
  • 原来是这样,没怎么接触过old syntax导致理解有误差了。但是我用C#建了一个dll,按照你的代码运行了一下发现没有任何问题。其实一般来说这种First-chance exception 类型的异常并不是代表你的代码有问题。http://blogs.msdn.com/b/davidklinems/archive/2005/07/12/438061.aspx 

    据我所知,这些异常大部分是因为和底层打交道的API用的结构化异常(SEH)所捕获的,对于你的应用进程没什么影响。如果你的确不喜欢这些输出信息,你可以在output窗口取消选中exception Messages。你可以在debug菜单的Exception项里点击Add和添加 HRException 异常,然后你就能定位到产生异常的代码。当然如果产生异常的是在你的dll里而且你没有你所用的dll的源代码的话是定位不到的。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年10月28日 8:43
  • TrueShdw.dll 是托管程序集吗?

    2014年10月29日 1:40