我想在Visual Studio中製作一個由VC++ DLL(C++/CLI)和VB.Net應用程序組成的解決方案。爲了弄清楚這一點,我創建了一個VC++類庫項目,用下面的代碼(我刪除嚮導創建的所有垃圾):VB.Net中的VC++ DLL疑難解答
mathfuncs.cpp:
#include "MathFuncs.h"
namespace MathFuncs
{
double MyMathFuncs::Add(double a, double b)
{
return a + b;
}
}
mathfuncs.h:
using namespace System;
namespace MathFuncs
{
public ref class MyMathFuncs
{
public:
static double Add(double a, double b);
};
}
這個編譯挺開心。然後我可以在VC++控制檯項目添加到解決方案,添加一個參照原始項目爲這個新項目,並調用它,如下所示:
TEST.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))
然而,當我運行此代碼,它給了我一個錯誤:
Could not load file or assembly 'MathFuncsAssembly, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. An attempt was made to load a program with an incorrect format.
我需要以某種方式暴露方法?
我正在使用Visual Studio 2008 Professional。