Я пытаюсь вызвать свою С++-библиотеку из моего приложения С# (через С++/CLI). Я последовал примеру этого вопроса (для моего конкретного приложения). Настройка моего приложения:
- Project1: проект С++ (я компилирую это в DLL)
- Project2: проект С++ (моя оболочка CLR, просто файл заголовка в примере выше, ссылки Project1)
- Project3: проект С# (ссылки Project2)
К сожалению, когда я нахожусь для доступа к объекту оболочки CLR в моем приложении С#, я получаю следующую ошибку:
Тип или имя пространства имен 'YourClass' не удалось найти (вы не видите используя директиву или сборку ссылка?)
У меня неправильная настройка проекта, или есть что-то еще, на что я должен смотреть? (К сожалению, я не могу опубликовать код по проприетарным причинам, но это очень простой бит кода и легко следует приведенному выше примеру.)
Update:
Итак, я сделал именно то, что сказал Крис (см. ответ ниже), но я все еще получаю сообщение от своего приложения на С#: "Тип или имя пространства имен" MyProgram "не удалось найти (вам не хватает директивы using или ссылку на сборку?). Вот (макет) моего кода.
- Project1 - это мое приложение на С++. Он компилирует/работает. Я использовал его в другом месте. (Я получаю 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 - это мое приложение С#.
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, который ссылается на Project1. Все строит без ошибок (кроме ошибки, описанной выше в коде С# в строке using MyProgram
).