【问题标题】:Troubleshooting VC++ DLL in VB.NetVB.Net 中的 VC++ DLL 疑难解答
【发布时间】:2012-08-27 19:00:54
【问题描述】:

我正在尝试在 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。

【问题讨论】:

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


    【解决方案1】:

    有时当项目平台设置不正确时,我会明白这一点。 转到您的项目设置 > 编译 > 高级编译选项并选择目标 CPU x86。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-06
      • 2014-08-29
      • 2011-10-27
      • 1970-01-01
      相关资源
      最近更新 更多