【发布时间】:2011-12-04 07:39:30
【问题描述】:
我想在我的 C++/CLI 应用程序中包含第三方 C++ 库。
执行此操作的标准方法是什么?
提前致谢。
【问题讨论】:
我想在我的 C++/CLI 应用程序中包含第三方 C++ 库。
执行此操作的标准方法是什么?
提前致谢。
【问题讨论】:
我不知道是否存在这样的标准,您可以像使用 C++ 应用程序一样在 C++/CLI 应用程序中使用 C++ 库。 我总是尝试做的唯一一件事是将第三个库包装在代理或外观设计模式之后,以便客户端始终使用托管类。 如果您的 C++/CLI 应用程序是其他 .NET 应用程序使用的库,这一点尤其重要。
例子:
// 3rd party header
class Value{};
// your C++/CLI app
#include <3rdpaty/Value.h>
public ref class ValueWrapper
{
public:
// wrapper interface here
private:
std::scoped_ptr<Value> value_;
};
【讨论】:
std::scoped_ptr<> 这样的东西...
几乎没有什么,C++/CLI 是明确创建来支持这种情况的。只需从 CLR 节点中选择一个项目模板即可开始。您必须告诉链接器链接 .lib 文件并在您的 C++/CLI 源代码中#include 标头。
您可能遇到的唯一问题是#include 标头可能包含可能被 C++/CLI 编译器误解的声明。例如 C 函数声明。最好的办法是明确地告诉编译器。像这样:
#include "stdafx.h"
#pragma managed(push, off)
#include "3rdparty.h"
#pragma managed(pop)
#pragma comment(lib, "3rdparty.lib")
// Rest of your code
sn-p 中的#pragma 注释告诉链接器也链接第 3 方库的 .lib 文件。使您不必在链接器的附加依赖项设置中显式执行此操作。
就是这样。
【讨论】: