我从此网站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)
最可能的解释(可能性接近1)是Windows 7计算机安装了MSVC运行时,而XP计算机没有安装。
下载VS2010 MSVC运行时的可再发行组件,并将其安装在XP计算机上。然后,您的代码应该可以工作了。Windows 7计算机上已经存在运行时,因为这是您的开发计算机。
FWIW,您的p /调用不完全正确。它无法指定调用约定。它应该是:
[DllImport("TestLib.dll", CallingConvention=CallingConvention.Cdecl)]
public static extern void DisplayHelloFromDLL();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句