如何在C#代码中使用c ++代码在XP下运行?

时间:2011-11-24 15:42:21

标签: c# c++ dll windows-xp filenotfoundexception

我又遇到了一个我无法解决的问题。

我正在尝试在C#中使用C ++ DLL。我在Win7环境下成功构建了所有内容。但是,当我将这些二进制文件移动到XP环境时,我得到一个错误:

  

未处理的异常:System.IO.FileNotFoundException:无法加载文件或程序集“TestDLL.dll”或其依赖项之一。无法找到指定的模块。在Test.Program.Main()

我已经安装了所有C ++ Redistributable软件包(2005年,2008年,2010年),但这些并没有解决问题。

我尝试使用.NET v3.5而不是v4.0,但它也没有帮助我。我正在使用VS2010。

构建的简单代码我曾经在Win7上构建的XP上重新生成问题:

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构建的,而不是任何CPU或x64。

我缺少什么依赖?我测试的每个XP都出现了这个问题。这在我测试的每个Win7上都运行良好。

1 个答案:

答案 0 :(得分:1)

我在XP上测试了这个。得到了同样的错误,使用了ProcMon,发现MSVCR100.dll丢失了。已安装Microsoft Visual C++ 2010 Redistributable Package (x86),一切正常。没有更多的错误。 并且还将应用程序构建为Release ..

您是否使用ProcMon查看系统中缺少的内容?