在VB.Net中排除VC ++ DLL故障

时间:2012-09-02 20:50:06

标签: vb.net visual-studio visual-c++ c++-cli

我正在尝试在Visual Studio中创建一个包含VC ++ DLL(C ++ / CLI)和VB.Net应用程序的解决方案。为了解决这个问题,我使用以下代码创建了一个VC ++类库项目(我删除了向导创建的所有垃圾):

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))

但是,当我运行此代码时,它会给我一个错误:

  

无法加载文件或程序集“MathFuncsAssembly,Version = 0.0.0.0,Culture = neutral,PublicKeyToken = null”或其依赖项之一。试图加载格式不正确的程序。

我是否需要以某种方式公开该方法?

我正在使用Visual Studio 2008 Professional。

1 个答案:

答案 0 :(得分:0)

有时我没有正确设置项目平台。 转到您的项目设置&gt;编译&gt;高级编译选项并选择目标CPU x86。