我正在尝试在 Visual Studio 中制作一个由 VC++ DLL (C++/CLI) 和 VB.Net 应用程序组成的解决方案。为了解决这个问题,我创建了一个 VC++ 类库项目,代码如下(我删除了向导创建的所有垃圾):
数学函数.cpp:
#include "MathFuncs.h"
namespace MathFuncs
{
double MyMathFuncs::Add(double a, double b)
{
return a + b;
}
}
数学函数.h:
using namespace System;
namespace MathFuncs
{
public ref class MyMathFuncs
{
public:
static double Add(double a, double b);
};
}
这编译得非常愉快。然后我可以在解决方案中添加一个 VC++ 控制台项目,为这个新项目添加对原始项目的引用,并按如下方式调用它:
测试.cpp:
using namespace System;
int main(array<System::String ^> ^args)
{
double a = 7.4;
int b = 99;
Console::WriteLine("a + b = {0}",
MathFuncs::MyMathFuncs::Add(a, b));
return 0;
}
这工作得很好,并将构建到 test.exe 和 mathsfuncs.dll。
但是,我想使用 VB.Net 项目来调用 DLL。为此,我将一个 VB.Net 项目添加到解决方案中,使其成为启动项目,并添加对原始项目的引用。然后,我尝试按如下方式使用它:
MsgBox(MathFuncs.MyMathFuncs.Add(1, 2))
但是,当我运行此代码时,它给了我一个错误:
无法加载文件或程序集“MathFuncsAssembly,Version=0.0.0.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。试图加载格式不正确的程序。
我是否需要以某种方式公开该方法?
我正在使用 Visual Studio 2008 Professional。