编译DLL(CURL库)时出现问题(Visual Studio) 我在C++中编译DLL有问题。我正在使用用于HTTP POST的CURL库

编译DLL(CURL库)时出现问题(Visual Studio) 我在C++中编译DLL有问题。我正在使用用于HTTP POST的CURL库,c++,C++,当我将代码编译为控制台应用程序时,不会出现编译错误。但同样的代码会得到未解决的外部符号错误 行,如: curl_global_init(CURL_GLOBAL_DEFAULT); curl = curl_easy_init(); curl_easy_setopt(...); curl_mime_name(...); 我用dll做错了什么?少了什么 代码如下: // dllmain.cpp : Defines the entry point for the DLL application.

当我将代码编译为控制台应用程序时,不会出现编译错误。但同样的代码会得到未解决的外部符号错误

行,如:

curl_global_init(CURL_GLOBAL_DEFAULT);

curl = curl_easy_init();

curl_easy_setopt(...);
curl_mime_name(...);
我用dll做错了什么?少了什么

代码如下:

// dllmain.cpp : Defines the entry point for the DLL application.
#define CURL_STATICLIB
#include "pch.h"
#include "CURL/curl.h"

#pragma comment (lib, "CURL/libcurl_a.lib")

__declspec(dllexport) int httpPOST();

BOOL APIENTRY DllMain(HMODULE hModule,
    DWORD  ul_reason_for_call,
    LPVOID lpReserved
)
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }
    return TRUE;
}

int httpPOST() {
    CURL* curl;
    CURLcode res;

    curl_global_init(CURL_GLOBAL_DEFAULT);

    curl = curl_easy_init();

    if (curl) {
        curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST");
        curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/");
        curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
        curl_easy_setopt(curl, CURLOPT_DEFAULT_PROTOCOL, "https");
        struct curl_slist* headers = NULL;
        headers = curl_slist_append(headers, "Cookie: cmslog=1");
        curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
        curl_mime* mime;
        curl_mimepart* part;
        mime = curl_mime_init(curl);
        part = curl_mime_addpart(mime);
        curl_mime_name(part, "username");
        curl_mime_data(part, "user", CURL_ZERO_TERMINATED);
        part = curl_mime_addpart(mime);
        curl_mime_name(part, "requestcode");
        curl_mime_data(part, "123456", CURL_ZERO_TERMINATED);
    }
    return 0;
}
httpPOST()中的代码在console应用程序中编译时不会出现问题

错误包括:

错误LNK2001未解析的外部符号\uuuu imp\uuuu curl\u global\u init

错误LNK2001未解析的外部符号\uuuu imp\uuuu curl\u easy\u init

错误LNK2001未解析外部符号\uuuu imp\uuuu curl\u easy\u setopt

错误LNK2001未解析的外部符号\uuuu imp\uuuu curl\u slist\u append

错误LNK2001未解析的外部符号\uuuu imp\uuuu curl\u mime\u init

错误LNK1120 8未解析的外部

问题出现在
#define CURL\u STATICLIB
顺序中

正确的顺序是:

#include "pch.h"
#define CURL_STATICLIB
#include "CURL/curl.h"

谢谢大家的帮助。

你能分享错误信息吗?我的水晶球告诉我你没有链接旋度库;您正在使用头来进行编译,但是链接时间会丢失您引用的所有CURL内容,因为库丢失或从未添加。您确定
CURL/libcurl\u a.lib
正确吗?我添加了错误
CURL/libcurl\u a.lib
是正确的,我再次检查了它@Jean MarcVolle@WhozCraigMost可能您构建dll的方式与构建控制台应用程序的方式不同。您是否有严格相同的线程/调试选项?错误的库风格。如果实际上打算链接静态curl库,那么您需要在消费项目中定义curl\u STATICLIB。顺便说一句,这不是很标准化。