我正在尝试将C ++库链接到C#代码。我在这个链接中找到了这个非常好的解释:https://social.msdn.microsoft.com/Forums/vstudio/en-US/299da822-5539-4e5b-9ba7-b614e564c9f4/presenting-a-c-library-lib-for-use-in-c-project?forum=vcgeneral
所以我试着在这里重现它:
我的标题:
// Static Library's Header: MathFuncsLib.h
namespace MathFuncs
{
class MyMathFuncs
{
public:
// Returns a + b
static double Add(double a, double b);
// Returns a - b
static double Subtract(double a, double b);
// Returns a * b
static double Multiply(double a, double b);
// Returns a / b
static double Divide(double a, double b);
};
}
我的C ++源代码是:
/* MathFuncsLib.cpp
compile with: cl /c /EHsc MathFuncsLib.cpp
post-build command: lib MathFuncsLib.obj
This example comes from MSDN
*/
#include "MathFuncsLib.h"
#include <stdexcept>
using namespace std;
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)
{
return a / b;
}
}
最后,我想要使用C ++库的C#代码是:
using System;
using System.Runtime.InteropServices;
namespace TestCppLibrary
{
public class Program
{
[DllImport("MathFuncsLib.dll.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern double Add(double a, double b);
static void Main(string[] args)
{
double a = 7.4;
double b = 99.3;
double res = Add(a, b);
Console.WriteLine("The sum is : " + res.ToString());
Console.ReadLine();
}
}
}
我收到此错误:
{“无法加载DLL'MathFuncsLib.dll':指定的模块 无法找到。 (HRESULT异常:0x8007007E)“}
我已经花了两天时间搜索解决方案,但我找不到有用的答案。
我想我需要将我的库定义为COM。如果是这样,怎么办?无论如何,在这种情况下如何将我的库链接到C#代码?
谢谢
Henrique的