首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >静态链接Casablanca/CPPREST SDK

静态链接Casablanca/CPPREST SDK
EN

Stack Overflow用户
提问于 2017-07-04 12:13:40
回答 3查看 8.2K关注 0票数 8

我正在尝试创建一个基于Windows的VC++ DLL (在VS 2015中),它静态地链接到卡萨布兰卡CPPREST。也就是说,我想要一个DLL输出,其中包含CPP库和我的代码。

我提到过这条帖子,但它似乎过时了(并且断开了链接):

https://katyscode.wordpress.com/2014/04/01/how-to-statically-link-the-c-rest-sdk-casablanca/

我尝试从GitHub下载Casablanca,并编译生成lib文件的“Casablanca 140静态”项目。问题是,当我将它与我的项目联系起来时,我得到了许多未解决的外部因素。

许多人对上述URL中未解决的链接错误进行了评论.Github上也有很多线程,人们说他们不能将简单的项目与静态库联系起来。

有人有一套清晰的步骤可以帮助解决这个问题吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-07-04 16:07:52

好的,为了成功链接到CPP静态库,我汇集了来自不同线程的许多建议,并有以下几个步骤:

  1. https://github.com/Microsoft/cpprestsdk下载Casablanca。(通过GIT克隆或Zip)。
  2. 打开VS解决方案,右键单击properties 140的属性。
  3. CPPREST_EXCLUDE_COMPRESSION.预处理器定义的C++ ->中,添加->完整的列表如下:_NO_ASYNCRTIMP;_ASYNCRT_EXPORT;_PPLX_EXPORT;WIN32;_MBCS;_USRDLL;CPPREST_EXCLUDE_COMPRESSION;%(PreprocessorDefinitions)
  4. 在图书馆员-> General ->附加依赖项中,添加->(参见https://github.com/Microsoft/cpprestsdk/issues/344)
  5. 按OK,然后构建cpprestsdk140.static 140静态项目。您将在二进制文件目录中得到一个libcpprest140d_2_9.lib (用于调试构建)。

现在,在您自己的项目中:

  1. 如果您以前使用过Nuget版本的CPPREST,首先要确保删除Nuget包管理器中的任何引用。
  2. 右键单击您的项目属性,然后转到C++ ->附加包含目录,并输入CPPREST包含文件的路径。它们目前驻留在cpprestsdk\Release\include中。
  3. 现在转到C++ ->预处理器定义,添加->(参见https://github.com/Microsoft/cpprestsdk/issues/124)。
  4. 转到Linker ->输入并添加->(以及路径名,如果适用)。对于发行版,似乎还需要添加crypt32.lib;winhttp.lib.。
  5. 建立你的项目,希望一切顺利;)

我希望这能帮到别人(我肯定会的)!

票数 13
EN

Stack Overflow用户

发布于 2017-09-22 09:19:52

简单Guy的回答中还有一个补充:如果在项目中使用http_listener类,很可能需要Httpapi.lib来修复链接器错误。

此外,我还想提出一种更简单的编译静态cpprestdk库的方法。我已经成功地使用它在VS2017中构建了我的项目。

  1. https://github.com/Microsoft/vcpkg安装vcpkg
  2. 使用以下命令编译cpprestsdk: 步骤1. vcpkg install cpprestsdk:x86-windows-static 步骤2. vcpkg install cpprestsdk:x64-windows-static
  3. 遵循简单Guy答案的第二部分,从您的项目设置开始。另外,使用我从上面和BobC的建议来修复链接器错误。

享受吧!

票数 7
EN

Stack Overflow用户

发布于 2017-08-06 06:35:02

除了简单Guy所说的,您可能需要将bcrypt.lib添加到链接器->Input->附加依赖项,因为CPPRest中的OAuth1.obj文件依赖于其中的一些函数。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44905708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档