2012-09-02 43 views
2

我想在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。

回答

0

我有時會在項目平臺設置不正確時得到這個結果。 轉到您的項目設置>編譯>高級編譯選項並選擇目標CPU x86。