2015-08-23 78 views
-1
  1. 机器A上装有VS2012,上面有一个小型的VC++ .NET工程,我们用64位配置构建这个工程,它生成一个DLL(比如TestDLL.dll)。64位汇编程序未能加载

  2. 在同一台机器A,如果我创建一个小型控制台应用程序,并写 var objBroker = new CUccxBroker();,它工作得很好, “CUccxBroker” 是“TextDLL.dll”的一部分。

  3. 但是,如果我复制机器A所产生的DLL,并将其粘贴在机器B,写相同的代码就失败,错误“Couldn't load file or assembly TestDLL.dll, file or one of its dependencies not found

VS versio在两台机器上都是相同的,不知道在我编译机器上的代码然后使用DLL之后开始工作。任何帮助都会很棒。

+0

听起来像你的TestDLL.dll有一个外部引用/依赖关系,机器A有但机器B没有。检查你的VC++项目的参考。如果我记得正确,VC++项目可以是静态绑定或动态绑定。静态意味着库/可执行文件中包含所有必需的参考代码。动态意味着它期望引用(MS C++库可能?)可用。 – Mmm

+0

您好@Mmm,感谢您的帮助,我忘了补充一点,如果我在机器B上构建项目,它就开始工作。在VS我应该chk的引用,对不起,我没有C++的经验.. – shashank

+0

如果我不得不猜测,我会说你有一个不同版本的机器B上所需的C + +库比你A。寻找项目某处的属性......应该有一个与静态库链接的选项,而不是动态链接。 – Mmm

回答

0

下载'dependency walker'工具的副本(网上提供的免费软件)。这将以图形方式显示一个树,显示程序集的依赖关系,那些程序集的依赖关系(而非循环)等。它突出显示哪些依赖关系丢失,从而很容易找到缺少的内容。