C#app调用unsafe函数抛出dll未找到异常,但dev机器工作正常

时间:2016-05-20 02:13:11

标签: c# c++ .net dll clr

假设我的项目结构。

App cs project ===> App.dll

XWrapper C ++项目===> XWrapper.dll(clr:safe)

x.dll ===> x.dll(只是复制)

在Unsafe.cpp中有一个名为XWrapper的类,它使用 LoadLibraryEx

调用x.dll

在app.cs中有一个函数

private unsafe bool callX(){
    XWrapper x = new XWrapper();
    ....
}

=============================================== =======================

机器A已安装VS2015并构建项目。我可以成功调试到不安全的函数。

同时,当我将整个构建复制到机器B时,无法执行不安全的功能。

尝试调试函数时,抛出 System.IO.FileNotFoundException 异常,说无法加载文件或程序集'XWrapper.DLL'或其依赖项之一。< / strong>

然后我通过FUSLOGVW.exe检查日志,没有任何错误。

LOG: Assembly Name is: XWrapper, Version=1.0.5984.17726, Culture=neutral, PublicKeyToken=6a8f2c98accc9ccf
LOG: Binding succeeds. Returns assembly from C:\Users\admin\AppData\Local\assembly\dl3\9AYAC4D8.B5T\ZR9BQ7XN.RBG\4f3d4e8e\80c69e0a_3ab2d101\XWrapper.dll.
LOG: Assembly is loaded in default load context.

如果我在机器B中编译这个项目,clr在机器B上工作,而在将构建移动到机器A时不适用于机器A.

请注意,app都在window7 x86运行时中运行。

看来clr(不安全的功能)只适用于构建它的机器,任何想法?我该如何进行正确的配置来解决这个问题?

0 个答案:

没有答案