У меня есть аналогичные настройки, как описано ниже:
Проект А
Проект Б
Теперь, если глобальная функция, например createNewFoo
составлен в Проект Б, он никогда не экспортируется в конечную DLL, хотя объявлен с dllexport
и окончательное приложение использует его как dllimport
:
namespace example
{
class __declspec(dllexport) Foo
{
Foo();
};
__declspec(dllexport) Foo* createNewFoo();
}
}
Обратите внимание, что класс Foo
всегда экспортируется в конечную DLL, ее единственные глобальные или статические функции, которые как-то отбрасываются.
Кроме того, обратите внимание, что одна и та же глобальная функция всегда экспортируется, если она компилируется в Проект А вместо Проект Б.
Есть ли в Visual Studio 2010 какие-либо параметры, позволяющие экспортировать глобальные или статические функции из зависимых проектов? или это ограничение инструментов?
Использование статической библиотеки — отличный способ повторно использовать код. Вместо того, чтобы повторно реализовывать одни и те же подпрограммы в каждом приложении, которое требует функциональности, вы записываете их один раз в статическую библиотеку и затем ссылаетесь на нее из приложений. Код, связанный со статической библиотекой, становится частью вашего приложения — вам не нужно устанавливать другой файл, чтобы использовать код.
В вашем случае функция Lib B связана и становится частью DLL A, если вы хотите экспортировать эти функции в DLL A, вам следует эксплицитно dllexport
Функция в DLL A, и в теле функции, вы можете вызвать функцию Lib B. для повторного использования кода.