0

我有一个 .c 和一个 .h 文件被修改为在 cpp 应用程序中使用,实际上它们有

#ifdef __cplusplus
       extern "C"{
#endif 

前辈线。我想知道是否以及如何使用 ac# 程序中定义的函数。也许我必须为那段代码创建一个 dll?

4

3 回答 3

1

这是取自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

于 2012-09-13T08:13:10.987 回答
1

你们似乎不明白 - 他没有 dll,他有 c++ 源文件:

你有两个选择

  1. 将 c++ 代码转换为 C# 并将其直接合并到您的应用程序中

  2. 使用 c++ 编译器从源文件创建 dll 并使用 PInvoke 访问它

至于您是否需要修改 c++ 代码以创建 dll 或使其可从 C# 访问,如果不发布完整代码,我们将无法知道。

于 2012-09-13T10:33:03.297 回答
0

这是 MSDN 博客上的一个明显示例。您可以使用 IntPtr 加载 DLL 路径。

http://blogs.msdn.com/b/jonathanswift/archive/2006/10/03/dynamically-calling-an-unmanaged-dll-from-.net-_2800_c_23002900_.aspx

于 2012-09-13T08:24:14.833 回答