【发布时间】:2017-02-27 21:13:49
【问题描述】:
我正在尝试完成一个使用 c++ 库和 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# 控制台:
using ClassLibraryCPP;
namespace ConsoleApplicationCS
{
class Program
{
static void Main(string[] args)
{
myClass testClass;
testClass = new myClass();
testClass.test();
}
}
}
我明白了:
“myClass”不包含“test”的定义,也没有扩展名 接受“myClass”类型的第一个参数的方法“test”可以是 找到(您是否缺少 using 指令或程序集引用?)
但是我已经创建了myClass 和test 方法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
【问题讨论】:
-
在cpp文件中,使用
void ClassLibraryCPP::myClass::test() {...} -
你做 dllexport 吗?
-
@IvanRubinson,不,我没有使用 dllexport。