【发布时间】:2014-06-07 15:15:59
【问题描述】:
我正在尝试创建一个 dll,它使用 curl 库来实现一个非常简单的功能。一切正常,唯一的问题是 curl 链接似乎无法正常工作。
我使用相同的链接、预处理器定义和包含目录,就像在我的可执行项目中一样,它工作得很好,所以我很确定这与我的链接或库的二进制文件无关。
是否有任何特殊属性可以将库链接到 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,我就发几个,我觉得应该够了)
ERROR 2 错误 LNK2001:无法解析的外部符号 “__imp__WSAStartup@8”。
ERROR 11 错误 LNK2001:无法解析的外部符号 “__imp__WSAGetLastError@0”。
ERROR 33 错误 LNK2001:未解析的外部符号 “__imp__setsockopt@20”。
【问题讨论】:
-
请说得更具体些;当您说“似乎无法正常工作”时 - 您是否收到编译错误、链接器错误、运行时错误?您可以发布您看到的任何错误消息。 EXE应该能够在搜索路径中找到DLL;通常,它们会在同一个文件夹中。
-
Are there any special properties to link a libary to a dll?确保 DLL 是使用您使用的相同编译器和相同配置编译的。这避免了 CRT 不兼容和超过 1 个堆的任何问题。