我正在尝试通过C++/CLI从我的C#应用程序中调用我的C++库。我按照此问题的示例(针对我的具体应用程序)。我的应用程序设置如下:
- Project1:C++项目(我将其编译为DLL)
- Project2:C++项目(我的CLR包装器;仅按照上述示例提供头文件;引用Project1)
- Project3:C#项目(引用Project2)
不幸的是,当我实际尝试在我的C#应用程序中访问CLR包装器对象时,我收到以下错误消息:
找不到类型或命名空间名称“YourClass”(是否缺少using指令或程序集引用?)
我是否设置项目有误,或者还有其他事项需要注意?(由于专利原因,我无法发布代码,但它非常简单,可以轻松地遵循上述示例。)
更新:
所以,我完全按照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 引用了 Project2,而 Project2 又引用了 Project1。所有项目都能够顺利构建,没有错误(除了在 C# 代码中 using MyProgram
行处描述的错误)。