[英]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”。
鏈接器錯誤告訴您鏈接器無法找到這些函數的定義: WSAStartup
, WSAGetLastError
, setsockopt
。 這些函數在導入庫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.