Borland C++ 编译器中的链接 DLL

Jan*_*roň 1 c dll borland-c++

我使用 freecommandlinetools 编译器 bcc32。我需要在我的程序中使用第三方 dll。我不想调用LoadLibraryand GetProcAddress,而是在我的程序中链接 dll 以直接调用 dll 函数。

#include "somelibrary.h"

int main() {
  somefunction(); // defined in somelibrary.dll
}
Run Code Online (Sandbox Code Playgroud)

我在尝试编译时看到未解析的外部对象。如何说服链接器与 somelibrary.dll 链接?

Joë*_*cht 5

您必须创建一个 .lib 才能直接链接 dll。假设你的 dll 是 user32.dll :

implib -a -c -f user32.lib user32.dll
Run Code Online (Sandbox Code Playgroud)

将使用 user32.dll 的所有符号创建 user32.lib。然后使用 user32.lib 而不是 user32.dll 链接您的项目。

可以使用impdef.exe命令查看dll导出的符号。如果这些符号已经以下划线“_”开头,则可以省略 implib 命令中的 -a。