【问题标题】:Casablanca - REST C++ SDK, used in Embarcadero RAD Studio XE5Casablanca - REST C++ SDK,用于 Embarcadero RAD Studio XE5
【发布时间】:2014-08-18 14:31:47
【问题描述】:

我需要在 RAD Studio XE5 C++ 中进行 http 获取。 RAD Studio 站点上的教程讨论了我拥有的版本中不包含的 RESTCLient。我找到了专门用于 Visual Studio 的 Casablanca 项目,并在 VS 中编写了一个小程序,它可以执行简单的 http get 并以我需要的方式处理响应。

我需要做什么才能在 RAD Studio 中成功使用 Casablanca?

到目前为止,我已经采取了一些步骤。

  1. 在 Visual Studio 2013 中编译 Casablanca
  2. 将 .lib 和 .dll 复制到 RAD Studio 项目中的文件夹中
  3. 将该文件夹添加到 RAD Studio 项目的链接路径中
  4. 将 .lib 添加到项目中
  5. 将应在 .lib 中的类的 dll 导入添加到我想在其中使用该函数的 .cpp。

class __declspec(dllimport) http_client;
class __declspec(dllimport) filestream; 
class __declspec(dllimport) producerconsumerstream; 
class __declspec(dllimport) rawptrstream; 

  1. 出现 OMF 错误,我使用 RAD Studio 附带的工具转换 .lib,解决了错误。

我不知道如何声明函数的 dll 原型,因为返回类型来自库本身的命名空间,因此无法识别。 http_client 是一个无法识别的结构。

我也试过了,没有 class 关键字。

【问题讨论】:

    标签: c++builder dllimport casablanca


    【解决方案1】:

    导出类的 DLL 不能跨编译器移植。因此,如果它导出类,您将无法在 C++Builder 中使用 Visual Studio 编译的 DLL。要么展平 DLL 接口以导出纯 C 样式函数(然后使用 C++Builder 的命令行 IMPLIB 工具为 DLL 创建导入 .lib 文件,不要使用 Visual Studio 创建的 .lib 文件),或者找到其他解决方案。

    例如,C++Builder(和 Delphi)附带 Indy 10,它有一个 TIdHTTP 组件。您可以使用其TIdHTTP::Get() 方法来执行HTTP GET 请求。但是,如果您需要实际使用 REST,最好将您的 XE5 升级到具有TRESTClient 可用的版本(顺便说一句,Embarcadero 的 REST 类在内部使用 Indy)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-29
      • 2016-12-25
      • 1970-01-01
      相关资源
      最近更新 更多