我正在尝试从Visual Studio命令提示符调用lib.exe,以便我可以从.def文件构建.lib文件。当我运行时:
lib.exe / MACHINE:X86 /DEF:MyDLL.def
最后我想导出我在DLL中调用它们时使用的函数。我不得不创建这个库,因为我有2个DLL,第一个调用第二个。第二个我只有DLL本身,没有标题或.cpp文件。我没有.lib文件,因此我试图创建一个.lib文件。我已使用此工具expdef - def file generator创建我的.def文件并遵循此tutroial:How To Create 32-bit Import Libraries Without .OBJs or Source,因此我可以构建库文件。
我从命令提示符收到的错误是:
LINK:致命错误LNK1104:无法打开文件'MyDLL.def'
所以我尝试搜索了很多论坛和搜索,但找不到解决方法,为什么我会看到这个。
我已经在另一个论坛上发布了this,其中解释了我完全想要做的事情。
答案 0 :(得分:1)
如果您没有并为DLL导出.lib,则另一个选项是Win32 APIS LoadLibrary()和GetProcAddress()。使用被调用者DLL的导出入口点的名称从调用者代码调用这些API。链接第一个DLL时,根本不需要提及被调用者DLL。
要获取导出的入口点的名称,可以在被调用者DLL上使用“dumpbin / exports”或depends.exe等工具。
当然,您必须知道被调用入口点的签名和任何其他假设,否则您将得到未定义的行为。如果最坏的情况发生,你可以通过调试电话来推断出这些。