Tengo un proyecto de C++ (visual studio 2010) que consta de código nativo y código C++/cli también. No puedo compilar todo el proyecto con/clr, así que lo hago para los respectivos archivos C++/cli. Mi problema es que un archivo de encabezado no se puede compilar con/clr, pero quiero hacer que algunas funciones de C++/cli sean reutilizables dentro del proyecto completo y definir los prototipos de métodos en un archivo de encabezado para incluirlo en cada archivo donde lo necesite. ¿Hay una solución? He intentado definir algunos prototipos de métodos de código mixto en un archivo de cabecera, pero/clr debe estar activado para que se pueda compilar.archivo de encabezado de interfaz C++/cli
Aquí está mi ejemplo:
Test.h
#include <Windows.h>
#include <vector>
#include <string>
using std::vector;
using std::string;
#include <msclr/marshal.h>
#pragma managed
using namespace msclr::interop;
using namespace System;
using namespace System::IO;
using namespace System::Runtime::InteropServices;
public ref class Test
{
public:
int Foo();
};
Test.cpp
#include "Test.h"
int Test::Foo()
{
return 4;
}
Intellisense se queja con errores en Test.h como C++/CLI debe estar habilitado para usa #using. Pero creo que esto es insignificante y compilaría de todos modos.
Compilación aborta con un error de vinculador (SRY, tengo alemana Versión VS)
Fehler 6 error LNK1255: Fehler bei Verknüpfung aufgrund von Metadatenfehlern.
Fehler 4 error LNK2022: Fehler bei Metadatenoperation (8013118D) : Duplizierte Typen (_PROPSHEETPAGEA) wurden gefunden, aber die Typenlayoutinformationen sind nicht konsistent: (0x02000198).
Fehler 5 error LNK2022: Fehler bei Metadatenoperation (8013118D) : Duplizierte Typen (_PROPSHEETPAGEW) wurden gefunden, aber die Typenlayoutinformationen sind nicht konsistent: (0x020001d1).
que definitivamente no tiene una clase duplicado "de prueba" en otro lugar, así que no sé donde el duplicado viene. ¿Qué son las informaciones de tipo de letra y por qué no son consistentes?
¿Cómo se puede compilar parte del proyecto con/clr y parte sin? ¿Y por qué su código nativo no funciona con/clr? – svick
Es un complemento para 3dsMax y la compilación de todo el proyecto con/clr no funciona, tuve muchos errores. La forma recomendada por Autodesk es compilar solo las partes del código C++/cli con/clr on. Para cada archivo .cpp puede establecer "Usar Common Language Runtime" en las propiedades. – Michbeckable
¿Podría publicar un ejemplo sucinto de un archivo de encabezado y usar un archivo cpp que no compilaría? Además, ¿el archivo de cabecera está siendo consumido por a/clr cpp y un cpp no / clr? –