如何在C#应用程序中使用C ++ / CLI
|
我正在尝试从C#应用程序(通过C ++ / CLI)调用C ++库。我遵循了这个问题的示例(针对我的特定应用)。我的应用程序的设置是:
Project1:C ++项目(我将其编译为DLL)
Project2:C ++项目(我的CLR包装器;仅上述示例中的头文件;引用Project1)
Project3:C#项目(引用Project2)
不幸的是,当我实际上去访问C#应用程序中的CLR包装器对象时,收到以下错误:
类型或名称空间名称\'YourClass \'
找不到(您是否错过了
使用指令或程序集
参考?)
我的项目设置是否有误,还是应该考虑其他事项? (不幸的是,由于专有原因,我无法发布代码,但这是一段非常简单的代码,可以轻松地遵循上述示例。)
更新:
因此,我完全按照Chris所说的去做(请参见下面的答案),但是我仍然从C#应用程序中收到一条消息,提示找不到“类型或名称空间名称\'MyProgram \'(您是否缺少using指令)还是程序集引用?)这是我的代码(模型)。
Project1-这是我的C ++应用程序。它编译/工作。我在其他地方用过。 (我从此版本中获得了一个DLL。)
Project2-这是我包装的代码。
MyWrapper.h
#pragma once
#include \"myorigapp.h\"
using namespace System;
namespace MyProgram
{
public ref class MyWrapper
{
private:
myorigapp* NativePtr;
public:
MyWrapper()
{
NativePtr = new myorigapp();
}
~MyWrapper()
{
delete NativePtr;
NativePtr = NULL;
}
void dostuff()
{
NativePtr->dostuff();
}
}
}
Project3-这是我的C#应用程序。
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MyProgram;
namespace Testing
{
class Program
{
static void Main(string[] args)
{
MyWrapper p = new MyWrapper();
p.dostuff();
}
}
}
Project3引用引用Project1的Project2。一切构建都没有错误(除了我在using MyProgram
行的C#代码中上面描述的错误)。
没有找到相关结果
已邀请:
3 个回复
焙恍挝厂熄
)
旦彤
席酱
(以某种方式模仿boost :: shared_pointer或std :: auto_ptr)。因此,要将托管字符串存储在C ++类中,请使用以下命令:
请注意(如果这几天还没有解决),托管
和C / C ++ NULL之间的不匹配会引起一些摩擦。 您不能像您期望的那样轻松键入:
取而代之的是,您必须使用本机样式(由智能包装器
处理)
注意:最近几天,我都无法访问Windows计算机,因此我引用了内存