簡體   English   中英

C ++ Dll鏈接Curl

[英]C++ Dll linking Curl

我正在嘗試創建一個使用curl庫的dll非常簡單的函數。 一切正常,唯一的問題是,卷曲鏈接似乎不能正常工作。

我使用相同的鏈接,預處理器定義並包含像我的可執行項目中的目錄,它工作正常,所以我很確定它不是關於我的鏈接或二進制文件的庫。

是否有任何特殊屬性可以將libary鏈接到dll?

我的最小示例代碼:

C ++主文件:

#include "main.h" 
#include <Windows.h> 
#include <curlpp/cURLpp.hpp>
#include <curlpp/Easy.hpp>
#include <curlpp/Info.hpp>
#include <curlpp/Options.hpp>  
#include <curlpp/Exception.hpp>

namespace CurlDll 
{ 

    void CallHost::Try() 
    { 
        curlpp::Easy request;
        request.setOpt(new curlpp::options::UserAgent("Mozilla/4.0"));
        request.setOpt(new curlpp::options::AutoReferer(true));
        request.setOpt(new curlpp::options::FollowLocation(true));
        request.setOpt(new curlpp::options::Url("http://xml.utrace.de"));
        request.perform();
        MessageBox(0,"lololowwwwwwwwwwwl", "wqgqwwwwwgq", MB_OK |MB_ICONINFORMATION); 
    } 
}   
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason)
{return 1;}

頭文件:

#ifdef MAIN_EXPORTS 
#define MAIN_API __declspec(dllexport) 
#else 
#define MAIN_API __declspec(dllimport) 
#endif 
#include <iostream> 


namespace CurlDll 
{ 

    class CallHost 
    { 
    public: 
        static MAIN_API void Try(); 
    }; 
}

我得到以下鏈接錯誤@drescherjm(47,我將發布一些,我認為shouls就足夠了)

ERROR 2錯誤LNK2001:未解析的外部符號“__imp__WSAStartup @ 8”。

ERROR 11錯誤LNK2001:未解析的外部符號“__imp__WSAGetLastError @ 0”。

ERROR 33錯誤LNK2001:未解析的外部符號“__imp__setsockopt @ 20”。

鏈接器錯誤告訴您鏈接器無法找到這些函數的定義: WSAStartupWSAGetLastErrorsetsockopt 這些函數在導入庫Ws2_32.lib中定義。 您需要將該導入庫提供給鏈接器。

此信息在功能文檔中給出。 例如, WSAStartup的文檔。 文檔主題的底部是列出要求的表。 請注意所需的庫Ws2_32.lib

符號WSAStartup,WSAGetLastError和setsocketopt是Ws2_32.lib中Windows API的一部分(例如,請參閱http://msdn.microsoft.com/en-gb/library/windows/desktop/ms742213(v=vs.85)。 aspx

鏈接DLL時,應將ws2_32.lib作為附加庫包含在內。 如果您使用的是Visual Studio,搜索路徑可能已經找到了; 只需將其添加為附加庫。

實際上,我懷疑與.exe相比,你沒有使用完全相同的鏈接器選項

如果您正在構建.exe或.dll,則鏈接器需要確保它可以在鏈接時解析所有已知符號。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM