Как правильно развернуть управляемые / неуправляемые библиотеки C ++ - PullRequest
1 голос
/ 15 ноября 2011

У меня есть консольное приложение, написанное в основном на C #, предназначенное для .Net 4. Оно также использует библиотеку C ++ / CLI, которая упаковывает неуправляемую библиотеку C ++. Все встроено в режим Release для платформы x86, кроме библиотеки C ++? CLI, встроенной в Win32.

Поэтому, когда я вызываю консольное приложение на моей рабочей станции Win 7, оно работает. Однако при перемещении папки на сервер приложений Win 2003 SP2 она не загружается, утверждая следующее:

"System.IO.FileNotFoundException: не удалось загрузить файл или сборку 'MyWrapper.dll' или одну из ее зависимостей. Указанный модуль не найден. Имя файла: 'MyWrapper.dll' ".

Я нашел совет добавить следующее в мой app.config, но это не помогает:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup useLegacyV2RuntimeActivationPolicy="true">
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
    </startup>

Чего мне не хватает?

Редактировать: .Net 4 установлен на моем сервере приложений Win 2003 SP2, и консольные приложения, написанные на чистом C # и предназначенные для .Net 4.0, работают на нем.

Редактировать 2: MyWrapper.dll находится в той же папке.

Редактировать 3: DependencyWalker показывает, что отсутствуют следующие dll: MSVCP100.DLL, MSVCR100.DLL, DWMAPI.DLL. Я устанавливаю распространяемый.

Ответы [ 2 ]

4 голосов
/ 15 ноября 2011

Мое предположение (если MyWrapper.dll - сборка смешанного режима): Распространяемый пакет Microsoft Visual C ++ 2010 (x86) не установлен. Вы можете использовать http://www.dependencywalker.com/, чтобы найти недостающие библиотеки DLL. Запустите Dependencywalker и откройте MyWrapper.dll - и вы сможете найти все недостающие библиотеки DLL.

1 голос
/ 15 ноября 2011

Первое: действительно ли .NET 4 установлен на вашем сервере 2003 SP2?

Второе: действительно ли сервер является сервером x86? Это может быть процессор IA64 / Itanium? Потому что, если вы предварительно оптимизировали для x86, он не будет работать на таком сервере. Я почти всегда рекомендую сборку для всех платформ, пока у вас не будет очень веской причины поступить иначе.

В-третьих: от каких других библиотек зависит MyWrapper.dll? Возможно, с MyWrapper все в порядке, но другие библиотеки по какой-то причине не загружаются. Следуйте за кроликом в нору.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...