【问题标题】:Create dependency in DLL to other module with a non-".DLL" extension在 DLL 中创建对具有非“.DLL”扩展名的其他模块的依赖关系
【发布时间】:2010-01-12 09:24:16
【问题描述】:

这里有点奇怪的问题,但 AutoCAD 使用带有 .ARX 扩展名的扩展 DLL,除了扩展名之外,它们实际上与常规 DLL 完全一样。

现在我们已经构建了三个 .ARX 文件,其中后两个文件依赖于第一个文件。加载这两个文件后,AutoCAD 抱怨找不到所需的文件,并且在使用 Dependency Walker 工具时,很明显 Visual C++ 2008 链接器已生成对第一个文件的引用,但使用的是 .DLL 扩展名。我认为这是我们的问题。它会为一些导出的函数寻找 A.DLL,但这个文件实际上名为 A.ARX。

能否将 Visual Studio 项目配置为链接到带有 ARX 扩展名的文件,而不是生成这个看似错误的代码?

更新:这是关于 C++ DLL 的。

【问题讨论】:

  • 您使用哪种语言编译?你是如何引用 DLL 的?
  • 对不起,错过了这个.. C++。我正在使用 Visual C++ 2008。

标签: visual-studio dll visual-c++ linker autocad


【解决方案1】:

不确定为什么需要静态链接到另一个 ACAD adobe 扩展。共享函数可能应该重构为另一个 DLL。 或者你可以change the output file name generated in the export lib file

【讨论】:

  • 你的意思是动态链接?是的,我可能会在其他两个扩展中复制我的代码,只是我认为这可能比我最初想象的更容易解决。我已经使用 /OUT: 指令更改了输出文件名,但问题是在链接时,链接器似乎假设我打算链接到具有 DLL 扩展名的 DLL,并且仅在稍后编写相应的最终输出,它们是否命名为 .ARX。我现在已经通过二进制编辑输出文件解决了这个问题,但由于这是一个杂乱无章的问题,我暂时保持这个问题。
  • 奇怪,我在 VC2005 中创建了一个 C++ DLL,在设置中更改了输出文件名,喜欢生成的 lib,我的 exe 加载的文件没有 dll 扩展名。
猜你喜欢
  • 2019-06-02
  • 2011-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-03
  • 2013-02-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多