gpt4 book ai didi

c# - 导入 C# 应用程序的 C++ DLL

转载 作者:行者123 更新时间:2023-11-28 08:05:25 26 4
gpt4 key购买 nike

我正在尝试做一个基本的 C++ DLL,以便在 C# 中使用它。使用了以下类:

我的cpp文件

#include "stdafx.h"    
#include "MathFuncsAssembly.h"

namespace MathFuncs
{
double MyMathFuncs::Add(double a, double b)
{
return a + b;
}

double MyMathFuncs::Subtract(double a, double b)
{
return a - b;
}

double MyMathFuncs::Multiply(double a, double b)
{
return a * b;
}

double MyMathFuncs::Divide(double a, double b)
{
if (b == 0)
{
throw gcnew DivideByZeroException("b cannot be zero!");
}

return a / b;
}
}

我的头文件

using namespace System;

namespace MathFuncs
{
public ref class MyMathFuncs
{
public:
static double Add(double a, double b);

static double Subtract(double a, double b);

static double Multiply(double a, double b);

static double Divide(double a, double b);
};
}

在我调用库的 C# 应用程序中

[DllImport("MathFuncsAssembly.dll")]
public static extern double Add(double a, double b);

static void Main(string[] args)
{
Console.WriteLine(Add(10.0, 11.0));
Console.ReadLine();
}

在 (Add(10.0,11.0)) 部分发生异常。抛出以下异常:试图加载格式不正确的程序。 (HRESULT 的异常:0x8007000B)..有什么想法吗?此外,我将 .dll 文件复制到 C# 应用程序的 bin 中......

谢谢!

最佳答案

如果您有一个 ref 类(因此有一个 C++/CLI dll),您根本不需要 DllImport:只需在 C# 项目中添加对 dll 的引用并调用函数“C# 方式”即 MathFuncs.Add()(请注意,您仍然需要确保平台匹配,并且 CLI dll 依赖的所有 native dll 都在路径中)

关于c# - 导入 C# 应用程序的 C++ DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10395168/

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