0

我正在尝试从 Visual Studio 命令提示符调用 lib.exe,以便可以从我的 .def 文件构建 .lib 文件。当我运行这个:

lib.exe /MACHINE:X86 /DEF:MyDLL.def

最后,我想导出我的函数以在我从 DLL 中调用它们时使用。我必须创建这个库,因为我有 2 个 DLL,第一个调用第二个。第二个我只有 DLL 本身,没有头文件或 .cpp 文件。我没有 .lib 文件,因此我尝试创建一个。我已经使用这个工具expdef - def 文件生成器来创建我的 .def 文件并遵循这个教程:如何在没有 .OBJs 或 Source 的情况下创建 32 位导入库,所以我可以构建库文件。

我从命令提示符收到的错误是:

链接:致命错误 LNK1104:无法打开文件“MyDLL.def”

因此,我尝试通过许多论坛和搜索进行搜索,但找不到解决我为什么看到此问题的解决方案。

我已经在这里的另一个论坛上发布了这个,它解释了我完全想做的事情。

4

1 回答 1

1

如果您没有 .lib 并导出 DLL 的另一个选择是 Win32 APIS LoadLibrary() 和 GetProcAddress()。使用被调用者 DLL 的导出入口点的名称从调用者代码调用这些 API。在链接第一个 DLL 时,您根本不需要提及被调用者 DLL。

要获取导出入口点的名称,您可以在被调用者 DLL 上使用“dumpbin /exports”或depends.exe 之类的工具。

当然,您必须知道被调用入口点的签名和任何其他假设,否则您将获得未定义的行为。如果最坏的情况发生在最坏的情况下,您可以通过调试调用来推断出这些。

于 2013-08-02T19:22:36.667 回答