我有一个 .c 和一个 .h 文件被修改为在 cpp 应用程序中使用,实际上它们有
#ifdef __cplusplus
extern "C"{
#endif
前辈线。我想知道是否以及如何使用 ac# 程序中定义的函数。也许我必须为那段代码创建一个 dll?
这是取自MSDN的一个简单示例:
using System;
using System.Runtime.InteropServices;
class PlatformInvokeTest
{
[DllImport("msvcrt.dll")]
public static extern int puts(string c);
[DllImport("msvcrt.dll")]
internal static extern int _flushall();
public static void Main()
{
puts("Test");
_flushall();
}
}
这假设您愿意将现有代码编译成 .DLL
你们似乎不明白 - 他没有 dll,他有 c++ 源文件:
你有两个选择
将 c++ 代码转换为 C# 并将其直接合并到您的应用程序中
使用 c++ 编译器从源文件创建 dll 并使用 PInvoke 访问它
至于您是否需要修改 c++ 代码以创建 dll 或使其可从 C# 访问,如果不发布完整代码,我们将无法知道。
这是 MSDN 博客上的一个明显示例。您可以使用 IntPtr 加载 DLL 路径。