【发布时间】:2014-01-16 19:47:32
【问题描述】:
我有一个在 Linux 上编译的 C++ 库,并希望在 Visual Studio 中编译相同的代码(.NET 兼容代码)。
我已在 Visual Studio 中成功编译了相同的本机代码(不涉及图形)。但是,我想向 .NET 公开一些类。我可以为一些非托管类编写一个托管包装器——如果我花费了我真正没有的时间。但是,对于一些简单的类,似乎在开始时使用指令
#ifdef _MSC_VER
public ref class myclass
#else
class myclass
#endif
可以解决问题。代码编译为在 Visual Studio 中管理,否则编译为本机。但是,一些涉及指针的类在编译时会返回错误。我知道“*”是非托管指针,“^”是托管指针。我可以定义吗
#ifdef _MSC_VER
#define POINTER ^
#else
#define POINTER *
#endif
这是经常修改的研究代码。编写包装器将非常耗时,并且每次修改本机类时还需要修改包装器。因此,我更喜欢使用上面的条件语句(但我想尽可能少地使用)。是否有编写在本机 C++ 和 C++/CLI 之间最大程度兼容的代码的教程。
提前致谢
【问题讨论】:
-
注意你没有GC!!
-
或者其他方式 - 原生 C++ 不期待 GC
-
在原生 C++ 中编译时不要使用裸指针。您有机会使用 refcounted 智能指针获得成功(不过要小心循环)。
标签: c++ .net visual-studio g++ c++-cli