Всем доброго времени суток.
Мне потребовалось использовать обычную Win32 DLL (Чистый C++, без .NET, собирается в VS2005 и VS2008) в проектах .NET.
Решил сделать обвязку - написать на C++/CLI еще одну библиотеку, оборачивающую каждый класс из Win32 DLL в класс .NET
Насколько мне известно, это довольно распространенная схема, и мне требудется придерживаться именно такой архитектуры - в задании требуется сохранить интерфейс классов.
При использовании обвязки выбрасывается исключение
System.BadImageFormatException (is not a valid Win32 application. (Exception from HRESULT: 0x800700C1))
Использую - т.е. подключаю к проекту на C# свою .NET библиотеку и пробую обратиться к классам оттуда.
В итоге я написал небольшой тестовый проект: Win32 DLL -- .NET DLL (Class Library) -- проект C#.NET и нашел причину -
невозможно обвязать DLL, если в ее коде подключен любой заголовочный файл из библиотеки Boost, даже если не использовать бустовские классы в коде.
Без Boost все РАБОТАЕТ.Нашел в инете пару подобных случаев, возникших при обвязке библиотек, использующих Boost - эти проблемы были не решены. Например:
http://objectmix.com/dotnet/121318-not-valid-win32-application-exception-hresult-0x800700c1.htmlЯ использую:
Boost 1.35.0
Visual Stidio 2005 SP1, 2008 - в обеих Студиях абсолютно идентичные результаты
Windows XP SP2 x86.