为什么我得到“'某些类'不包含'某些方法'的定义”错误,而类有该方法?

时间:2017-02-27 10:42:22

标签: c# dll c++-cli

我正在尝试完成一个简单的教程,用于在c#console应用程序中使用c ++库。 这里我有一个简单的类库:

cpp文件:

#include "stdafx.h"

#include "ClassLibraryCPP.h"

using namespace ClassLibraryCPP;

void myClass::test() 
{
    Console::WriteLine("hello cpp/cli!");
}

标题文件:

#pragma once

using namespace System;

namespace ClassLibraryCPP
{

    public class myClass
    {
    public:
        void test();
    };
}

现在这是我的c#console:

using ClassLibraryCPP;

namespace ConsoleApplicationCS
{
    class Program
    {
        static void Main(string[] args)
        {
            myClass testClass;
            testClass = new myClass();
            testClass.test();
        }
    }
}

我得到了这个:

  

'myClass'不包含'test'的定义,也没有扩展名   方法'test'接受'myClass'类型的第一个参数可能是   发现(您是否缺少using指令或程序集引用?)

但我已将myClasstest方法设为public,那么为什么.test()对于控制台应用程序不可见?

更新: 添加ref以创建托管类,然后重建C ++项目(通过右键单击并重建而不仅仅是重建解决方案)解决了问题。 我也发现这个问题有关: C# code can't "see" the methods in my C++ dll 我仍然不明白这是如何工作的: https://www.youtube.com/watch?v=xTRTY-fOIe8&t=1800s

1 个答案:

答案 0 :(得分:4)

管理您的课程:

public ref class myClass
{
public:
    void test();
};

更改方法声明:

void ClassLibraryCPP::myClass::test()
{
  Console::WriteLine("hello cpp/cli!");
}