2015-01-19 4 views
2

Я абсолютно уверен, что это невозможно из того, что я прочитал, и попробовал. Хотя для удобства и непрерывности кода я хотел бы спросить здесь.Экспортировать функцию в пространстве имен?

Можно ли экспортировать функцию вместе с его пространством имен контейнер Пример:

namespace Continuity 
{ 
int Foo(void); 
} 

Стандартное использование будет: Непрерывность: Foo();

Я хочу, чтобы иметь возможность экспортировать эту функцию для использования в DLL, однако я хочу сохранить ее в структуре пространства имен. Поэтому я могу использовать одно и то же использование в DLL.

ответ

5

Вы спросили:

Можно ли экспортировать функцию вместе с его пространством имен пример контейнера:

Да, это возможно.

Использование:

namespace Continuity 
{ 
    DLL_EXPORT int Foo(void); 
} 

Где DLL_EXPORT является #define д либо __declspec(dllexport) или __declspec(dllimport) соответствующим образом.

В проекте, где вы строите DLL, вам необходимо:

#define DLL_EXPORT __declspec(dllexport) 

В проектах, где вы используете DLL, вам необходимо:

#define DLL_EXPORT __declspec(dllimport) 
+0

Это довольно старое, так Надеюсь, вы ответите. Является ли пространство имен каким-либо образом влияет на вызов DLL? Если нет, я могу избавиться от него, если в моем проекте нет побочных эффектов. – MaestroGlanz

+0

Что вы подразумеваете под вызовом dll? –

+0

Если я вызываю функцию dll, например, '_AddFunc = (AddFunc) GetProcAddress (hInstLibrary,« Добавить »);', пространство имен появляется где угодно или просто «умирает»? – MaestroGlanz

Смежные вопросы