gpt4 book ai didi

c++ - 使用来自 C++ 程序的 dll。 (borland c++ builder 和一般)

转载 作者:搜寻专家 更新时间:2023-10-30 23:51:00 25 4
gpt4 key购买 nike

我正在尝试在我的程序中使用一个 dll,即 libcurl,但是,它没有链接。 Libcurl 带有我可以包含的 .h 文件(处理 dllimport),但是我想我必须指定在以某种方式链接时实际使用哪个 dll ...我该怎么做?我正在使用 Borland C++ builder 进行编译,但我真的很想知道这些东西通常是如何工作的...

编辑:这是代码(来自 curl 主页的直接 c/p)

bool FTPGetFile::ConnectToFTP(string ftpServer){
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "curl.haxx.se");
res = curl_easy_perform(curl);
return true;
}else{
return false;
}
}

这里是错误:

[Linker Error] Error: Unresolved external '_curl_easy_init' referenced from C:\PROJECTS\PC\TOOLBOX\DEBUG_BUILD\FTPGETFILE.OBJ[Linker Error] Error: Unresolved external '_curl_easy_setopt' referenced from C:\PROJECTS\PC\TOOLBOX\DEBUG_BUILD\FTPGETFILE.OBJ[Linker Error] Error: Unresolved external '_curl_easy_perform' referenced from C:\PROJECTS\PC\TOOLBOX\DEBUG_BUILD\FTPGETFILE.OBJ

编辑 2:根据 joe_muc 的建议,我使用 implib 工具制作了 lib 文件,并将它们包含在链接器路径中。我仍然遇到同样的错误。

最佳答案

如前所述,您将需要与您运行的 .dll 一起使用的静态 .lib 文件通过 implib 并将结果 lib 文件添加到您的项目中。

如果你这样做了,那么:

  • 您可能需要使用 stdcall 调用约定。您没有提到您使用的是哪个版本的 Builder,但是它通常在项目选项 - 高级编译器 - 调用约定下。
  • 您可能需要启用 MFC 兼容性选项。
  • 这可能是名称修改问题(项目选项 - C++ 兼容性选项)。
  • 或者生成下划线
  • 或打开或关闭高级链接器选项“Case_insensitive-link”

libcurl 似乎是 C 代码;但如果是C++,注意微软和Borland类一般不兼容。应该有让他们工作的技巧,但处理起来真是一团糟,我从来没有成功过。 C 编码的 DLL 应该可以工作。

关于c++ - 使用来自 C++ 程序的 dll。 (borland c++ builder 和一般),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/367926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com