标题的类型可见性共享本机客户端和受管客户端之间共享的头文件

时间:2010-11-08 05:05:38

标签: c++-cli preprocessor

我有一个头文件,包含本机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      
{

};

问题:

这是实现这一目标的适当方式,还是有更好的方法?

1 个答案:

答案 0 :(得分:0)

您是否尝试过链接到的MSDN页面上列出的make_public编译指示?

否则,您拥有的解决方案完全有效。我很想知道为什么要从CLR程序集中导出本机类型。