Я получил этот массивный проект со многими классами с определениями в файлах DLL. Мне нужно извлечь часть этого проекта и создать новый проект из этой части. Мне удалось найти некоторые DLL-файлы, используя карту кода в Visual Studio, но некоторые классы там не отображаются.
# ifdef FCBase
# define BaseExport __declspec(dllexport)
# else
# define BaseExport __declspec(dllimport)
# endif
class BaseExport Handled
{.
.
};
Что указывает, какие DLL-файлы связаны с чем?
директива __declspec(dllexport)
указывает, что все, что объявлено с помощью этой директивы, будет экспортировано из DLL для использования в каком-либо другом приложении, которое ссылается на эту DLL. Таким образом, при написании заголовочных файлов для кода, который будет скомпилирован в DLL, объявления функций и определения классов оформляются этой директивой. С другой стороны, код, который будет использовать эти функции и классы, должен будет объявить их с __declspec(dllimport)
, чтобы компоновщик знал, что они будут импортированы из DLL.
Обе директивы часто заменяются одним макросом, который принимает соответствующее значение в зависимости от настроек проекта. Таким образом, вы можете включить один и тот же заголовок в файлы реализации DLL и файлы реализации для некоторых других приложений, которые будут использовать эту DLL. Например, в вашем случае проект для DLL будет иметь FCBase
определяется так BaseExport
будет разрешать __declspec(dllexport)
на этапе предварительной обработки. Это означает, что этот проект предназначен для реализации DLL. Проект, который не имеет FCBase
определяется, что означает, что проект импортирует функции и классы из DLL.
Других решений пока нет …