-1

I have created a Dll file from c++, I then called it in a c# file. It is working fine.

But then when I tried to export the files in another computer. I was getting this exception : DLL not found.

I downloaded dependency walker to fix the bug, because I thought my DLL depended on other DLLs that were missing in the second computer; I then downloaded the missing DLLs.

Yet I am still getting the same error.

Dependency Walker also gives me this message : The application has failed to start because its side-by-side configuration is incorrect. Do you think it might be a clue?

Kindly assist. Thank you

4

3 回答 3

0

到目前为止我做了什么

  1. 我下载了 Dependency Walker 来检查是否有任何丢失的依赖 DLL。
  2. Dependency Walker 透露并行配置不正确,并建议使用 sxstrace.exe 工具(命令提示符)跟踪事件:http: //ntcoder.com/bab/2014/02/27/troubleshooting-side-by -side-issues-using-sxstrace/

  3. 然后我用事件查看器确认了错误的性质,它给了我以下消息: Dependent Assembly Microsoft.VC80.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.762 “找不到。请使用 sxstrace.exe 进行详细诊断。

  4. 我从http://www.microsoft.com/en-us/download/details.aspx?id=5638安装了 Microsoft Visual C++ 2005 SP1 Redistributable Package (x86) 8.0.50727.762 版本。因为显然问题似乎来自我的 DLL 是用 VC80 CRT 编译的,需要一个来运行。

  5. 然后我回到主计算机上,只是重新检查并发现它是 64 位的,我确信这是错误的来源。很抱歉没有从一开始就选择这个。

于 2014-11-03T10:08:54.220 回答
0
  • 您需要在客户端机器上安装适当的 VC++ 运行时。VC++ 运行时必须与位数(32 位或 64 位)以及您正在使用的服务包匹配(请参阅关于对话框 -左侧,而不是右侧(属于 .NET))。
  • 您可以使用/MT编译器选项将所有依赖的 DLL 放入您的 DLL(或 EXE)中。
  • 如果您使用的是 MFC,请使用“在静态库中使用 MFC”
于 2014-10-28T09:14:04.547 回答
0

主要问题是第一台计算机是 32 位的,而第二台计算机是 64 位的。我使用第二台计算机从我的源代码(生成 DLL 的那个)重新加载了 DLL 文件,它工作正常。

在使用 DLL 的程序中,我插入了一个代码来测试主机是 32 位还是 64 位,然后我会调用相应的 dll。

它工作得很好。谢谢大家

于 2016-11-21T18:32:14.397 回答