创建 C .dll并在 C# 中使用它

本文关键字:dll 并在 创建 | 更新日期: 2023-09-27 18:30:15

作为一个C#开发人员,我现在正在尝试学习一些C。创建一个 C dll,然后使用我在 C# 项目中创建的函数似乎很有趣,只是为了熟悉这门语言。

为了开发c dll,我使用DEV-C++,显然用于C# Visual Studio。

这是我到目前为止想出的:

C

#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#define NAG_CALL __stdcall 
#define NAG_DLL_EXPIMP  __declspec(dllexport)
NAG_DLL_EXPIMP void NAG_CALL Scalars(double, double*);
NAG_DLL_EXPIMP void NAG_CALL Scalars(double in, double *out)
{
  *out = in;
}

在 C# 中

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
namespace TestMyOwnCDLL
{
    public static class MyCDLLWrapper
    {
        [DllImport("TestDLL1.dll")]
        private static extern void Scalars(double invar, ref double outvar);
        public static double CallScalars(double invar)
        {
            double outvar = (double)0.0;
            Scalars(invar, ref outvar);
            return outvar;
        }
    }
}

我已将 TastDLL1.dll 添加到程序集并标记为"始终复制"。但是,当调用函数时,我得到一个BadImageFormatException。这意味着找到了 dll,但由于某种原因无法执行 dll。

有什么想法吗?我使用了以下示例:http://www.drdobbs.com/cpp/calling-c-library-dlls-from-c/184406285

亲切问候。

创建 C .dll并在 C# 中使用它

解决了错误:DEVC++ 编译器在 x64 中编译,而 c# 应用程序的目标平台设置为 x86。将目标平台更改为 x64 可解决此错误。

现在,是否有可能编译为C dll的AnyCPU?