我有一个头文件,包含本机cpp文件和托管cpp文件(使用/ clr编译)。它仅包含本机类型,但我想指定本机类型在程序集外可见 (见http://msdn.microsoft.com/en-us/library/4dffacbw(VS.80).aspx)。
基本上,我想:
public class NativeClass // The public makes this visible outside the assembly.
{
};
如果我从本机cpp中包含此代码,则会收到以下错误:
error C3381: 'NativeClass' : assembly access specifiers are only available in code compiled with a /clr option
我目前正在使用预处理器解决方案,该解决方案会在使用托管客户端进行编译时显示公共内容,但它不会显示在本机客户端中:
#ifdef __cplusplus_cli
#define CLR_ASSEMBLY_ACCESS_SPECIFIER__Public public
#else
#define CLR_ASSEMBLY_ACCESS_SPECIFIER__Public
#endif
CLR_ASSEMBLY_ACCESS_SPECIFIER__Public
class NativeClass
{
};
这是实现这一目标的适当方式,还是有更好的方法?
答案 0 :(得分:0)
您是否尝试过链接到的MSDN页面上列出的make_public
编译指示?
否则,您拥有的解决方案完全有效。我很想知道为什么要从CLR程序集中导出本机类型。