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

StackOverflow https://stackoverflow.com/questions/9570

  •  08-06-2019
  •  | 
  •  

Вопрос

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

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

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

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

Это было полезно?

Решение 3

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

  1. свяжите ссылку с помощью «/FORCE:MULTIPLE /verbose» (связь в порядке) и отложите вывод.
  2. свяжите его с помощью «/NODEFAULTIB /verbose», отследите все неразрешенные результаты предыдущего шага и добавьте библиотеки 1 к 1.
  3. В результате получились двойки:"ААА.lib:XXX уже определен в BBB.lib"
  4. И тогда я наконец понял:Переписываемые управляемые и неуправляемые подразделения с /MD и связаны с (среди прочего):MSCOREE.LIB MSVCMRT.LIB MFCM80D.LIB

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

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

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

Ян

Другие советы

Как минимум:

mscore

И повторяйте оттуда.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top