使用来自本机C++程序的C#库

本文关键字:程序 C++ 本机 | 更新日期: 2023-09-27 18:25:41

我尝试在本机C++程序中使用C#库(实际上引用了除dll之外的整个项目)。

基本上,我遵循了这里的示例:http://harinadha.wordpress.com/2011/10/17/ximucppapi/

我在VS中创建了一个空的sln,在这个sln中添加了C#程序。然后创建一个包装器C++程序,它引用了C#项目,并且在头文件中使用C#名称空间:

#include <string>
using namespace CsharpNamespace; //this is the C# namespace, has all the classes/ functions I need.
using namespace std;
namespace Wrapper
{
    public ref class CsharpClassWrapper
    {
        public:
        ReaderWrapperClass(){}
        static AllData ^AllDataWrapper; //the AllData class is the C# class
        static unsigned int ID;
        void Initial(string s);
    };
}

现在的问题是VS2012说它找不到命名空间。尽管它可以找到AllData类和与之相关的一切(函数、成员等),并且类名被突出显示,就像它知道这个类一样;当我删除using语句时,它再也找不到它了,并且会抛出一个错误,说类没有定义。

知道可能出了什么问题吗?非常感谢您的任何意见!

更新:

我有第三个项目,它将使用包装器项目,并调用包装器函数。如果我只编译包装器项目和C#项目,它运行良好,不会引发错误。但如果我试图编译第三个(主项目),它会有以上警告。

使用来自本机C++程序的C#库

我终于按照视频中的说明找到了答案:http://msdn.microsoft.com/en-us/vstudio/bb892741

他说,在C++项目中,你不需要启用"公共语言运行时支持(/clr)",这是不对的,你仍然需要使用它