C ++ / Cli: не удалось загрузить файл или сборку X или одну из ее зависимостей. не является приложением Win32. (Исключение из HRESULT: 0x800700C1) - PullRequest
7 голосов
/ 09 марта 2012

У меня есть проект C ++, проект C ++ \ Cli и проект ac # win.
Когда я получаю доступ к проекту cli из проекта win forms, я могу получить доступ и использовать функции проекта cli.Но когда я включаю заголовки моего cpp-проекта в cli-проект, я получаю эту ошибку времени выполнения из моего c # -проекта, когда получаю доступ к cli-проекту.

  CliWrapper.Func meta = new CliWrapper.Func();

Это ошибка, которую я принял:

BadImageFormatException: Не удалось загрузить файл или сборку X или одну из ее зависимостей.не является приложением Win32.(Исключение из HRESULT: 0x800700C1)

Я понял, что #include <boost/thread.hpp> вызывает проблему

Ответы [ 2 ]

4 голосов
/ 09 марта 2012

Я нашел решение:

http://marc.info/?l=boost-users&m=123425857320026

В свойствах конфигурации -> C / C ++ -> Препроцессор -> Препроцессор Определения добавляют BOOST_ALL_DYN_LINK, чтобы принудительно использовать Библиотеки DLL. Кроме того, скопируйте необходимые библиотеки DLL в каталог, где находится исполняемый файл находится Например. скопируйте boost_thread-vc90-mt-gd-1_XX.dll в MyApp / bin / Debug.

2 голосов
/ 09 марта 2012

Весьма вероятно, что ваш проект C ++ скомпилирован как Win32, а ваш проект C # либо AnyCPU, запущенный на 64-разрядной машине, либо просто сборка x64.

Сконфигурируйте ваш C # и C ++ / CLI проект для целевой архитектуры x86.

...