Пожалуйста, прочитайте о стандартном способе использования макросов для этой очень распространенной задачи здесь: http://wiki.tcl.tk/8721
Основная идея состоит в том, что вы определяете макрос, скажем MY_API
, например, так:
#ifdef BUILD_MYAPI
# define MY_API __declspec(dllexport)
#else
# define MY_API __declspec(dllimport)
#endif
Когда вы объявляете функцию или класс в заголовочном файле, вы делаете это:
void MY_API myApiFunction(int x);
Когда вы создаете свою собственную dll, которая объявляет тело функции, вы добавляете определение BUILD_MYAPI
для сборки.Это делает все замедления dllexport
, когда вы включаете заголовок из некоторой другой библиотеки DLL, которую вы не добавляете BUILD_MYAPI
, поэтому замедления составляют dllimport
При компиляции с Visual Studio вы можете добавить макросопределение к компиляции без изменения источника из свойств проекта -> C / C ++ -> Preprocesson -> Определения препроцессора