Введите visibilty для заголовка. Совместно используйте файл заголовка для собственных и управляемых клиентов. - PullRequest
0 голосов
/ 08 ноября 2010

У меня есть заголовочный файл, который включается как в собственный файл 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

Попытка решения:

В настоящее время я использую препроцессорное решение, которое приводит к тому, что public появляется при компиляции с управляемым клиентом, но не для собственного клиента:

#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 голосов
/ 08 ноября 2010

Пробовали ли вы прагму make_public, указанную на странице MSDN, на которую вы ссылались?

В противном случае решение, которое у вас есть, является абсолютно верным. Мне любопытно узнать, почему вы хотите экспортировать нативные типы из сборки CLR.

...