Использование библиотеки DLL C ++ / CLI в приложении Visual C ++ 6.0

Я разработчик .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.


person Phil    schedule 14.10.2014    source источник
comment
Используйте отладчик. Не VS6, отлаживайте проект C ++ / CLI. Задайте начальный EXE, тип для смешанного и установите точку останова для функции dllexport.   -  person Hans Passant    schedule 14.10.2014
comment
@HansPassant Спасибо за предложение. См. Правку выше.   -  person Phil    schedule 14.10.2014


Ответы (1)


Оказывается, это проблема операционной системы.

После того, как я заметил, что он отлично работает на моем ПК с Windows 8.1, я взглянул на настройки набора инструментов моей платформы для C ++ / CLI DLL. Чтобы перейти к ним, щелкните правой кнопкой мыши проект -> Свойства -> Свойства конфигурации -> Общие. Я нацеливался на «Visual Studio 2013 (v120)», тогда как должен был ориентироваться на «Visual Studio 2013 - Windows XP (v120_xp)». После того, как я изменил этот параметр, DLL начала работать на машине с Windows XP.

person Phil    schedule 14.10.2014