none
Ошибка в сборке смешанного (управляемого+неуправляемого) кода для X64 RRS feed

  • Общие обсуждения

  • Есть 32-битный проект на С++ в управляемом коде (/clr), использующий 32-разрядную же dll в неуправляемом коде. При попытке сделать то же в 64-битном варианте (первый проект компилируется на платформе X64, ссылается при этом на lib файл X64-версии неуправляемой dll), сборщик выдает ошибку:

    MSVCRT.lib(ti_inst.obj): fatal error LNK1112: тип компьютерного модуля "X86" противоречит типу целевого модуля "X64"

    Почему подцепляется 32 битная библиотека MSVCRT и как с этим бороться?

    Все это на Visual Studio 2010 и 2013

Все ответы

  • Вероятно, одна из зависимостей Вашей dll ссылается на 32-разрядный модуль MSVCRT.

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

  • Это вряд ли. Неуправляемая dll прекрасно работает с другими неуправляемыми приложениями X64, так что в ней посторонних ссылок вроде бы нет. Управляемая dll ссылается только на нее (через Lib файл), остальные ссылки могут быть только на системные библиотеки, но за них отвечает уже студия. В студии я указал MACHINE:X64, так что должна бы подставлять 64-битные библиотеки, но увы...
  • В студии я указал MACHINE:X64, так что должна бы подставлять 64-битные библиотеки, но увы...
    Так Вы просто настройки компоновщика изменили, или новую конфигурацию проекта (x64) сделали?

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    9 июня 2014 г. 11:06
  • Студия неправильно определяет свои  директории с библиотеками в конфигурации с /clr. Нужно  в свойствах проекта прямо добавить amd64  к путям ...\lib. Можете посмотреть правильные пути в директориях Windows SDK
    18 июля 2014 г. 7:35