当我引用CURL库时将无法生成DLL

问题描述

我正在尝试用C ++构建DLL,但是在调用CURL库时,我一直收到链接错误

我的.h文件如下:

#pragma once

#ifdef ALTITUDE_EXPORTS
#define EXTFUNCS_API __declspec(dllexport)
#else
#define EXTFUNCS_API __declspec(dllimport)
#endif


extern "C" EXTFUNCS_API void __stdcall AssociateGuidToMetadata 
(
    const char* Guid,const char* Metadataname,const char* MetadataValue
);

.cpp文件中的函数看起来像

EXTFUNCS_API void __stdcall AssociateGuidToMetadata
(
    const char* Guid,const char* MetadataValue
) 
{
    std::thread newThread1(sendPOSTrequest,(Guid,Metadataname,MetadataValue));
}

sendPostrequest函数看起来像

static void  sendPOSTrequest(const char* fmt...) {
    std::string result;
    CURL* curl;
    CURLcode res;
    curl_global_init(CURL_GLOBAL_DEFAULT);
    curl = curl_easy_init();
    if (curl) {
        curl_easy_setopt(curl,CURLOPT_URL,"https_some_website_here.html");
        curl_easy_setopt(curl,CURLOPT_POSTFIELDS,"name=name");
        res = curl_easy_perform(curl);
        curl_easy_cleanup(curl);
        if (CURLE_OK != res) {
            std::cerr << "CURL error: " << res << '\n';
            curl_easy_cleanup(curl);
        }
    }
    curl_global_cleanup();
}

我很确定CURL库确实可以正常工作,因为如果我进行更改

EXTFUNCS_API void __stdcall AssociateGuidToMetadata

至:

static void AssociateGuidToMetadata

并将其从.h文件删除解决方案构建就很好。

我已经尝试过

  1. 在以下位置添加包含文件夹:属性>> C / C ++ >>常规>>其他包含目录
  2. 在以下位置添加文件属性>>链接器>>输入>>其他依赖项

image of the additional dependencies in Linker >> Input

  1. 属性添加EXTFUNCS_API >> C / C ++ >>预处理器>预处理器定义

有什么想法吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)