Я пытаюсь использовать С# 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, он больше не может его найти и будет вызывать ошибку, говоря, что класс не определен.
Любая идея, что может быть неправильным? Любой вход очень приветствуется!
Обновить:
У меня есть третий проект, он будет использовать проект-оболочку и вызовет функцию-оболочку. Если я только компилирую проект оболочки и проект С#, он отлично работает, при этом не возникает ошибка. Но если я попытаюсь скомпилировать третий (основной проект), он будет иметь вышеуказанное предупреждение.
Наконец, я нашел ответ, следуя инструкциям в видео: http://msdn.microsoft.com/en-us/vstudio/bb892741
Он говорит, что в проекте C++ вам не нужно включать "Common Language Runtime Support (/clr)", что неверно, вам все равно нужно его использовать.