Я снова столкнулся с проблемой, с которой не могу разобраться.
Я пытаюсь использовать 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, которую я тестировал.