如何在c#程序中使用C dll

时间:2012-09-13 08:08:20

标签: c# c dll

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

#ifdef __cplusplus
       extern "C"{
#endif 

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

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

你们似乎没有得到它 - 他没有dll,他有c ++源文件:

您有两个选择

  1. 将c ++代码翻译成C#并将其直接合并到您的应用程序中

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

  3. 如果您需要修改c ++代码来创建dll或使其可以从C#访问,我们无法在没有发布完整代码的情况下知道。

答案 2 :(得分: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