используя C # lib из родной программы C ++

1

Я пытаюсь использовать С# lib (фактически ссылающийся на весь проект, отличный от dll) в программе C++.

В основном я следовал примеру здесь: http://harinadha.wordpress.com/2011/10/17/ximucppapi/

Я создаю пустой sln в VS, добавьте программу С# в этот sln. Затем создайте программу-оболочку 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, он больше не может его найти и будет вызывать ошибку, говоря, что класс не определен.

Любая идея, что может быть неправильным? Любой вход очень приветствуется!

Обновить:

У меня есть третий проект, он будет использовать проект-оболочку и вызовет функцию-оболочку. Если я только компилирую проект оболочки и проект С#, он отлично работает, при этом не возникает ошибка. Но если я попытаюсь скомпилировать третий (основной проект), он будет иметь вышеуказанное предупреждение.

  • 0
    Вы спрашиваете о C ++ / CLI, а не о C ++, даже если вы не знаете.
Теги:
dll
c++-cli

1 ответ

0

Наконец, я нашел ответ, следуя инструкциям в видео: http://msdn.microsoft.com/en-us/vstudio/bb892741

Он говорит, что в проекте C++ вам не нужно включать "Common Language Runtime Support (/clr)", что неверно, вам все равно нужно его использовать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню