将库(.lib)放入DLL文件的正确方法是什么

时间:2018-08-07 10:09:07

标签: c++ curl static-libraries

我下载了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代码时,它肯定会找到它。我一无所知。预先感谢。

0 个答案:

没有答案