Как использовать c ++ dll в коде C #, который работает под XP? - PullRequest
0 голосов
/ 24 ноября 2011

Я снова столкнулся с проблемой, с которой не могу разобраться.

Я пытаюсь использовать C ++ DLL в C #. Я получаю все сборки успешно в моей среде Win7. Но когда я перемещаю эти двоичные файлы в среду XP, я получаю сообщение об ошибке:

Необработанное исключение: System.IO.FileNotFoundException: Не удалось загрузить файл или сборку 'TestDLL.dll' или одну из ее зависимостей. Указанный модуль не найден. Test.Program.Main ()

Я установил все распространяемые пакеты C ++ (2005, 2008, 2010), но они не устранили проблему.

Я пытался использовать .NET v3.5 вместо v4.0, но это мне тоже не помогло. Я использую VS2010.

Простой код для сборки, который я использовал для восстановления проблемы в XP, основанной на Win7:

C ++ DLL:

#include "stdafx.h"
#include "TestDLL.h"

namespace Test
{
    namespace DLL
    {
        DLL::DLL(void)
        {
        }
    }
}
#pragma once
using namespace System;

namespace Test
{
    namespace DLL
    {
        public ref class DLL
        {
            public:
                DLL(void);
        };
    }
}

Консольное приложение C #:

using System;
using Test.DLL;

namespace Test
{
    class Program
    {
        static void Main()
        {
            try
            {
                DLL a = new DLL();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            Console.ReadLine();
        }
    }
}

Все они построены на x86, а не на любом процессоре или x64.

Какую зависимость я пропускаю? Эта проблема возникала на каждой XP, которую я тестировал. Это работало нормально на каждой Win7, которую я тестировал.

1 Ответ

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

Я также проверял это на XP. Получил ту же ошибку, использовал ProcMon и увидел, что MSVCR100.dll отсутствует. Установил распространяемый пакет Microsoft Visual C ++ 2010 (x86) и теперь все работает. Нет больше ошибок. А также собрал приложение как Release ..

Вы использовали ProcMon, чтобы увидеть, чего не хватает в вашей системе?

...