Вопрос

Хорошо, вот моя странность на сегодня.
Я создаю расширения к существующей программе C ++, которую у меня нет доступа к исходному коду.

Я пишу стандартные DLL C / C ++, и я использую IJW, чтобы позвонить в DLLS C # DLL. Я не сделал это на некоторое время, но теперь я пытаюсь получить один на работу на окне 7. Я получаю ошибку (ошибка 0000036B1 - не уверен, что это внутренний номер ошибки к приложению, или ошибка Windows. < / P >.

У меня есть несколько виртуальных компьютеров (XP и Windows 7) DLL работает нормально на XP. Он также работает на Windows 7, если установлен Visual Studio 2008. Но не на чистоте Windows 7, имеющие только Microsoft Visual C ++ 2008 SP1 Redistributable Package установлен.

Я могу компилировать и запустить прямые DLL C ++ в поле Clean Windows 7, если компилятор установлен на MT [d], но если я установлю переключатель / CLR, я должен изменить это на MD [D], а затем Не удается в поле для чистой Windows 7. Но не на коробке Windows 7 с установленной Visual Studio 2008.

Любые идеи о том, что мне нужно установить на чистую коробку? (кроме против конечно ;-))

Спасибо за вашу помощь.

l. Ли Сондерс

Это было полезно?

Решение

Хорошо, это плохо.Кто-то указал, что файлы, которые мне нужны были отладочными версиями, и это означало, что я составил мою DLL в режиме отладки.Он предложил попробовать режим выпуска.

Итак, с новой копией моего виртуального ПК под управлением Windows 7 Basic (этот Redist 3,5 C ++ установлен) я скопировал через мою оригинальную DLL (один в режиме отладки), просто чтобы убедиться, что этот виртуальный компьютер имел эту проблему.Да, это сделал.

Затем я скопировал через DLL, которая была скомпилирована в режиме выпуска.Это сработало.

Хорошо, я официально хочу забить голову на стену.

Спасибо за ваше время.

l.Ли Сондерс

Другие советы

Вам понадобится как перераспределение времени выполнения VC ++ (который имеет код поддержки для набора C ++) и .NET Framework 3.5 (который имеет код поддержки для C ++ / CLI).

.NET 3.5 должен пойти с Win7, но VS2008 SP1 поставляется с .NET 3.5 SP1, поэтому я бы порекомендовал установить все обновления .NET из обновления Windows.

Теперь я чувствую себя плохо.Это было не полностью чистую установку Windows 7. Мне нужно было установить приложение, для которого я пишу расширения.Эта программа «Последний патч» установил Visual C ++ 2008 SP1 Redistributableable пакет.

Ну, я решил попробовать создать установочный проект немного Bitty C ++ / CLI DLL и сказал ему, чтобы включить зависимость.Он вытащил в 2 файла:

C: \ Program Files \ Common Files \ Merge Modules \ Microsoft_VC90_DEBUGCRT_X86.MSM C: \ Файлы программы \ Common Files \ Merge Modules \ Policy_9_0_microsoft_vc90_debugcrt_x86.msm

Я запустил установку и крошечное приложение работало.Я вручную скопировал над моими DLL и вот и вот, они работали сейчас.Итак, чтобы получить его на работу, мне нужны эти два файла.

Почему?И почему они не были включены в пакет Redist?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top