gpt4 book ai didi

c# - C# 中的 C++ dll

转载 作者:行者123 更新时间:2023-11-28 07:57:36 25 4
gpt4 key购买 nike

我有如下的 C++ DLL

#include "stdafx.h"


extern "C" __declspec(dllexport)double Add(double a, double b);


extern double Add(double a, double b)
{
return a + b;
}

n here m trying to link this DLL with my C# app

using System.Text;

using System.Runtime.InteropServices;

namespace test
{

class Program

{

[DllImport("DLL.dll", CallingConvention = CallingConvention.Cdecl)]

public static extern double Add(double a, double b);


static void Main(string[] args)

{




Console.WriteLine(Add(1.0, 3.0)); // error here


Console.ReadLine();

}
}
}

我得到错误:

"Unable to load DLL 'DLL.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)"

请帮帮我……我怎样才能将 C++ DLL 与 C# 链接起来?

最佳答案

调用约定决定了函数参数在函数调用之前如何放置在堆栈上,以及函数返回时如何删除它们(调用者与被调用者)。您可以在大约一百万个 StackOverflow 问题中找到更多相关信息,或转到 here。并阅读一点。

关于 DLL 在您正在编写的 C#(又名 .NET)应用程序范围内的放置,恐怕我无法对此发表评论,只能说一般 DLL 必须在您的库搜索路径(Windows 中的 PATH)中) 当前目录,或内核的主目录(通常是 c:\windows\system32。顺便说一句,不要将文件复制到 system32。只需将您的应用程序设置为“从”您的 DLL 所在的目录“运行”,您应该没问题。 异常(exception)情况,配置设置可以从根本上改变这一点,但如果我是你,我现在会坚持使用简单的。复杂的总会在以后出现。

关于c# - C# 中的 C++ dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12346026/

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