gpt4 book ai didi

c# - 如何在C#程序中使用用Visual C++编写的DLL?

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

<分区>

Possible Duplicate:
C# P\Invoke DLL no entry point into C++?

我在 SO 和谷歌上进行了相当彻底的冲浪后问了这个问题,大部分答案让我了解了大约 80%,但它仍然有点令人困惑,所以请告诉我出路。

我有一些 Visual C++ 函数定义如下:


MyDLL.h

#ifdef FUNCTIONS_EXPORTS
#define FUNCTIONS_API __declspec(dllexport)
#else
#define FUNCTIONS_API __declspec(dllimport)
#endif

namespace Functions {
class MyFunctions {
public:
static FUNCTIONS_API int Add(int a, int b);
static FUNCTIONS_API int Factorial(int a);
};
}

MyDLL.cpp

namespace Functions {
int MyFunctions::Add (int a, int b)
{
return a+b;
}
int MyFunctions::Factorial (int a)
{
if(a<0)
return -1;
else if(a==0 || a==1)
return 1;
else
return a*MyFunctions::Factorial(a-1);
}
}

现在,我想将此构建生成的 DLL 导入到我的 C# 程序中:

Program.cs

using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;

namespace DLLTester
{
class Program
{
[DllImport("path\\to\\the\dll\\myDLL.dll")]
public static extern int Factorial(int a);
static void Main(string[] args) {
int num;
num = int.Parse(Console.ReadLine());
Console.WriteLine("The factorial is " + Factorial(num));
}
}
}

我试过在没有类的情况下编写函数(定义时没有 static 关键字),但即使这样也行不通并且会出错。

我到底哪里出了问题?

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