gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 15:46:06 25 4
gpt4 key购买 nike

作为一名 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

亲切的问候。

最佳答案

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

现在,是否可以将 C dll 编译为 AnyCPU?

关于c# - 创建 C .dll 并在 C# 中使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18622149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com