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

Borland C++编译器中的链接DLL,c,dll,borland-c++,C,Dll,Borland C++,我使用freecommandlinetools编译器bcc32。我需要在我的程序中使用第三方dll。我不希望调用LoadLibrary和GetProcAddress,而是希望在程序中链接dll以直接调用dll函数 #include "somelibrary.h" int main() { somefunction(); // defined in somelibrary.dll } 我在尝试编译时看到未解析的外部。如何说服链接器链接到somelibrary.dll?为了直接链接dll,必

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

#include "somelibrary.h"

int main() {
  somefunction(); // defined in somelibrary.dll
}

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

为了直接链接dll,必须创建一个.lib。 假设您的dll是user32.dll:

implib -a -c -f user32.lib user32.dll
将使用user32.dll的所有符号创建user32.lib。然后将项目链接到user32.lib而不是user32.dll


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

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

implib -a -c -f user32.lib user32.dll
将使用user32.dll的所有符号创建user32.lib。然后将项目链接到user32.lib而不是user32.dll


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

dll中的函数需要与一起导出,是吗?是的,它们是。我在MinGW编译器中使用它们没有问题,我只是不知道borland的方法。首先使用dumpbin/EXPORTS your.dll查看从dll导出的符号。接下来,为其编写一个.def文件,并按照此处列出的步骤进行操作:然后,将您的程序与导入库相链接,您可以避免LoadLibrary和GetProcAddress。啊,freecommandlinetools包含创建导入库的implib.exe。但我仍然难以使用它…dll中的函数需要导出,是吗?是的,它们是。我在MinGW编译器中使用它们没有问题,我只是不知道borland的方法。首先使用dumpbin/EXPORTS your.dll查看从dll导出的符号。接下来,为其编写一个.def文件,并按照此处列出的步骤进行操作:然后,将您的程序与导入库相链接,您可以避免LoadLibrary和GetProcAddress。啊,freecommandlinetools包含创建导入库的implib.exe。但我仍然挣扎着使用它…啊,a开关是所有邪恶的根源!杰出的啊,a开关是万恶之源!杰出的