Создание библиотек DLL, которые используют другие библиотеки DLL в Visual Studio 2005 - PullRequest
2 голосов
/ 16 июня 2011

Я пытаюсь распараллелить наш процесс сборки в Visual Studio 2005, чтобы использовать преимущества нашего многоядерного оборудования.Если немного упростить, у меня есть две библиотеки DLL и приложение.DLL A не имеет зависимостей.DLL B использует определенные функции, определенные в DLL A. Приложение использует функции, определенные в обоих.

Я думал, что я должен быть в состоянии построить A и B параллельно, потому что вам не нужно разрешать символы, пока вы не свяжетесьприложение.Однако, когда я удаляю зависимость проекта DLL B от A, я получаю ошибки, подобные следующим:

YFindReplaceWidget.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual unsigned long __thiscall CORBBaseComponent::GetRefCount(void)const " (__imp_?GetRefCount@CORBBaseComponent@@UBEKXZ)

Есть ли способ устранить эти ошибки, чтобы я мог построить эти библиотеки DLL параллельно?

Ответы [ 2 ]

1 голос
/ 16 июня 2011

Это ... действительно странная мысль.DLL - это не что иное, как EXE-файлы с различными расширениями, для сборки требуется полная информация о ссылках.

Пока ваша сборка представляет собой цепочку, подобную этой (app-> b-> a), они не могут бытьпостроен параллельно.

0 голосов
/ 17 июня 2011

Microsoft официально представила многопроцессорную встроенную опцию в VS2008.Это позволит сборке запускать несколько компиляторов для одного проекта.Простое решение - это просто обновить до последней версии Visual Studio.

Если вы застряли на VS2005, то он на самом деле также доступен, но официально не поддерживается.Просто добавьте / MP в качестве дополнительной опции компилятора.

http://blog.280z28.org/archives/2007/10/17/ (не рекомендуется использовать его на своем сервере сборки)

http://msdn.microsoft.com/en-us/library/bb385193.aspx

...