我下载了curl库和curlpp并构建了它们,以用于C ++。我更改了项目属性,并修改了“ Additional Include Directories”,“ Additional Dependencies”和“ Additional Library Directories”。我还在Preprocessor Definitions博客文章之后修改了“ this”。
我要实现的目标应该很简单->创建一个导出函数的DLL,然后在.NET环境中使用这些函数。
我的DLL看起来像this。它是经过修改eu4hub_rest.cpp和stdafx.h的裸露骨骼。
eu4hub_rest.cpp:
// eu4hub_rest.cpp : Defines the exported functions for the DLL application.
//
#include "stdafx.h"
int SendNumber() {
return 1;
}
using namespace curlpp::options;
int Http_Request() {
try
{
// That's all that is needed to do cleanup of used resources (RAII style).
curlpp::Cleanup myCleanup;
// Our request to be sent.
curlpp::Easy myRequest;
// Set the URL.
myRequest.setOpt<Url>("localhost:3000/api");
// Send request and get a result.
// By default the result goes to standard output.
myRequest.perform();
}
catch (curlpp::RuntimeError & e)
{
return 5;
}
catch (curlpp::LogicError & e)
{
return 10;
}
return 15;
}
stdafx.h:
// TODO: reference additional headers your program requires here
#define EXTERN_DLL_EXPORT extern "C" __declspec(dllexport)
#include <iostream>
#include <curlpp/cURLpp.hpp>
#include <curlpp/Easy.hpp>
#include <curlpp/Options.hpp>
EXTERN_DLL_EXPORT int SendNumber();
EXTERN_DLL_EXPORT int Http_Request();
要在我的.NET环境中引用这些功能,我使用DLLImport方法。 DLL和.NET可以在没有curl代码的情况下很好地链接,我什至已经通过使简单的int函数返回一个值进行了测试,并且可以正常工作。 一旦我开始从curl添加代码,它就会开始横向运行。我可以离开第3部分包括,它仍然可以工作。当我开始添加curl代码时,就会出现问题。编译并运行后,.NET将显示this错误,该错误基本上表示它没有找到我的DLL,但是当我删除curl代码时,它肯定会找到它。我一无所知。预先感谢。