【发布时间】:2014-02-06 19:33:00
【问题描述】:
我从这个站点创建了一个示例应用程序 http://www.codeproject.com/Articles/9826/How-to-create-a-DLL-library-in-C-and-then-use-it-w 它创建一个 C 代码并在 C# 应用程序中使用。
#include <stdio.h>
extern "C"
{
__declspec(dllexport) void DisplayHelloFromDLL()
{
printf("Hello from DLL !\n");
}
}
C# 代码:
using System;
using System.Runtime.InteropServices; // DLL support
class HelloWorld
{
[DllImport("TestLib.dll")]
public static extern void DisplayHelloFromDLL ();
static void Main ()
{
Console.WriteLine ("This is C# program");
DisplayHelloFromDLL ();
}
}
这在 Windows 7 上运行良好。我在 Windows 7 机器上的 Visual Studio 2010 上构建了代码。当我尝试在 Windows XP 上运行 exe 时,它失败并引发以下异常:无法加载 DLL 'TestLib.dll':找不到指定的模块。 (HRESULT 异常:0x8007007E)
【问题讨论】:
-
XP机器上部署VS2010 C运行库了吗?
-
命名执行环境通常是个好主意。但是,在这种情况下,这模糊了您的观点:这与“Windows 7 与 Windows XP”无关,而是与“开发机器与普通机器”有关。 @Frédéric 已经暗示了这一点。
-
@FrédéricHamidi 不,我没有在 win xp 上部署 Visual Studio 2010。
-
@IInspectable :只有这段代码不适用于 dllImport。但以下 dllImport 工作 msdn.microsoft.com/en-us/library/…>