С какими библиотеками мне нужно связать мое приложение в смешанном режиме?

Я интегрирую поддержку .NET в наше приложение C ++.
Это приложение MFC старой школы, с 1 дополнительным файлом, скомпилированным с опцией "/ clr", которая ссылается на CWinFormsControl.

Мне не разрешено удалять флаг компоновщика "/ NODEFAULTLIB".
(У нас есть собственная система управления сборкой, а не Visual Studio.)
Это означает, что мне нужно указать все необходимые библиотеки: VC runtime и MFC.

Другие параметры компилятора включают "/ MD"

Кроме того: я не могу использовать флаг компоновщика "/ FORCE: MULTIPLE" и просто добавить все :
я ищу непересекающийся набор библиотек.

13.08.2008 08:05:00
3 ОТВЕТА

Как минимум:

mscoree.lib MSVCRT.lib mfc90.lib (настроить версию соответствующим образом)

И итерации оттуда.

1
13.08.2008 18:07:03

Используйте AppWizard для создания простого приложения MFC в своем стиле (SDI / MDI / диалоговое окно), а затем добавьте зависимости .

1
14.08.2008 00:32:25
РЕШЕНИЕ

Как я это решил:

  1. свяжите с "/ FORCE: MULTIPLE / verbose" (это нормально) и отложите вывод.
  2. связать с "/ NODEFAULTIB / verbose" и отследить все неразрешенные в выходных данных предыдущего шага и добавить библиотеки 1 на 1.
  3. Это привело к удвоению: «AAA.lib: XXX уже определено в BBB.lib»
  4. Тогда я наконец-то получил: Перекомпилированные управляемые и неуправляемые модули с / MD и ссылкой (среди прочего): mscoree.lib msvcmrt.lib mfcm80d.lib

Смешивание / MT (неуправляемые) и / MD (управляемые) оказалось плохой идеей: нужны разные (перекрывающиеся) библиотеки.

@ajryan: Dependcy Walker только говорит мне, какие библиотеки используются, а не то, с какими библиотеками связаны ссылки. (например, msvcmrt.lib?) Я думаю.

Спасибо за ответы!

январь

1
14.08.2008 11:01:33