Estoy intentando llamar a mi biblioteca C++ desde mi aplicación C# (a través de C++/CLI). Seguí el ejemplo de this question (para mi aplicación específica). La configuración de mi solicitud es:Cómo usar C++/CLI dentro de la aplicación C#
- Proyecto1: Proyecto C++ (que compila a un archivo DLL)
- Project2: C++ Proyecto (mi envoltorio CLR, sólo el archivo de cabecera por el ejemplo anterior, las referencias Proyecto1)
- proyecto3: C# Proyecto (referencias Project2)
por desgracia, cuando realmente vaya a acceder al objeto envoltorio CLR en mi aplicación C#, recibo el siguiente error:
The type or namespace name 'YourClass' could not be found (are you missing a using directive or an assembly reference?)
¿Tengo la configuración del proyecto incorrectamente, o hay algo más que debería investigar? (Por desgracia, no puedo enviar el código por razones de propiedad, pero es un poco muy simple de código y fácilmente sigue el ejemplo anterior.)
Actualización:
así lo hice exactamente lo que Chris dice que lo hace (Consulte la respuesta a continuación), pero aún recibo un mensaje de mi aplicación C# que dice "No se encontró el tipo o el nombre del espacio de nombres 'MiPrograma' (¿falta una directiva de uso o una referencia de ensamblado?). Aquí hay un (simulacro -up) de mi código.
- Proyecto1 - Esta es mi aplicación C++. Compila/funciona. Lo he usado en otros lugares. (I obtener una DLL de esta compilación.)
- Proyecto2 - Aquí está mi código para mi envoltorio.
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();
}
}
}
- proyecto 3 - Este es mi C# aplicación.
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();
}
}
}
proyecto3 referencia Project2 que hace referencia a Project1. Todo se genera sin errores (excepto el error que describí anteriormente en el código C# en la línea using MyProgram
).
¿falta una directiva de uso o una referencia de ensamblado? –
* debe * publicar algún código, si no desea publicar el original, quizás puede extraer las partes relevantes, simplificar y modificar algunos nombres, etc. –
@Hans @Doc - Actualicé la pregunta con el código y más información . – JasCav