Экспорт глобальных функций из нескольких проектов в Windows DLL?

У меня есть аналогичные настройки, как описано ниже:

Проект А

  • Windows DLL
  • Зависит от Проект Б

Проект Б

  • Скомпилировано как статическая библиотека

Теперь, если глобальная функция, например createNewFoo составлен в Проект Б, он никогда не экспортируется в конечную DLL, хотя объявлен с dllexport и окончательное приложение использует его как dllimport:

namespace example
{
class __declspec(dllexport) Foo
{
Foo();
};

__declspec(dllexport) Foo* createNewFoo();

}

}

Обратите внимание, что класс Foo всегда экспортируется в конечную DLL, ее единственные глобальные или статические функции, которые как-то отбрасываются.

Кроме того, обратите внимание, что одна и та же глобальная функция всегда экспортируется, если она компилируется в Проект А вместо Проект Б.

Есть ли в Visual Studio 2010 какие-либо параметры, позволяющие экспортировать глобальные или статические функции из зависимых проектов? или это ограничение инструментов?

0

Решение

Использование статической библиотеки — отличный способ повторно использовать код. Вместо того, чтобы повторно реализовывать одни и те же подпрограммы в каждом приложении, которое требует функциональности, вы записываете их один раз в статическую библиотеку и затем ссылаетесь на нее из приложений. Код, связанный со статической библиотекой, становится частью вашего приложения — вам не нужно устанавливать другой файл, чтобы использовать код.

В вашем случае функция Lib B связана и становится частью DLL A, если вы хотите экспортировать эти функции в DLL A, вам следует эксплицитно dllexport Функция в DLL A, и в теле функции, вы можете вызвать функцию Lib B. для повторного использования кода.

1

Другие решения


По вопросам рекламы [email protected]