Я разработчик .NET с ограниченным опытом работы с C, C ++ и C ++ / CLI.
У нас есть старая программа, которая все еще разрабатывается на Visual C ++ 6.0, строго на C (без функций C ++). Меня попросили разработать для этого приложения C ++ / CLI DLL, которая позволяет приложению запускать некоторые подпрограммы, написанные на .NET. Я использую Visual Studio 2013.
Машина, используемая для разработки приложения C, работает под управлением Windows XP, на ней установлена .NET 4.0. Мы получили его для связи с C ++ / CLI DLL, и все компилируется нормально. Однако когда мы запускаем программное обеспечение, ничего не происходит. Пользовательский интерфейс не отображается, и сообщений об ошибках нет. Процесс просто появляется в диспетчере задач на мгновение, а затем исчезает. Довольно сложно отлаживать, когда у нас нет сообщений об ошибках. Если закомментировать вызов функции DLL, программа работает в обычном режиме.
Мы используем передовые методы работы с DLL, такие как extern "C" {...}
, __declspec(dllimport)
, __declspec(dllexport)
, развертываем msvcr120.dll вместе с моей DLL и т. Д. Мы настроили фиктивную тестовую DLL без поддержки C ++ / CLI, чтобы убедиться, что мы создаем библиотеки правильно и все работает нормально. .
Означает ли это, что невозможно использовать C ++ / CLI DLL в старой программе на языке C?
РЕДАКТИРОВАТЬ: У меня он работает на моем ПК для разработки (Windows 8.1), но не на ПК с Windows XP с VC6. На ПК с Windows XP программа вылетает еще до того, как вызывает функцию DLL.