Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/03/2012, 07:03
chcma
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 21 años
Puntos: 7
C++ y C# comunicarlos...

Buenas foreros...

Vereis, tengo un problema que no sé resolver, y necesito su ayuda, jeje.

No soy programador de C++, pero en mi trabajo, tengo que usar de una libreria en C++ desde mi aplicación C#. El caso es que en teoría hago bien la llamada al método que tengo que utilizar, sin embargo, recibo la siguiente excepción:

Código:
Excepción no controlada del tipo 'System.AccessViolationException' en PruebaRegCompleto.RegCompleto.exe

Información adicional: Intento de leer o escribir en la memoria protegida. A menudo, esto indica que hay otra memoria dañada.
Por lo que he leido puede ser a que la librería de C++ esté mal desarrollada... por lo que querría mostrarles el código, para que me dijeran a ver que puede estar dandome problemas, por que yo... no tengo ni idea de código C++. Así que agradecería todo lo que pudieran decirme sobre el tema.

De Antemano... muchas gracias por vuestro tiempo.

Metodo del codigo C++
Código:
void __stdcall Encriptar(char* Resultado, const char* sCadena)
{
	int iAux = 0;                         
	std::string sSal;                 

	std::ostringstream output;             
	std::istringstream inputHex;           

	std::string sCad(sCadena);
	std::string sCla(m_Clave);

	int LongCadena = sCad.size();
	for(int i = 0; i < LongCadena;i++) 
	{
		iAux = (sCad[i]+sCla[i]) % 256;
		output << std::hex << iAux; 		
                               inputHex.str(output.str());
		output.str(""); 
		sSal += inputHex.str();
	}

	strcpy(Resultado, sSal.c_str());
}


llamada desde mi codigo C#
Código:
        [DllImport("info_decrypter.dll")]
        private extern static void Encriptar(ref string Resultado, ref string sCadena);

        private void button1_Click(object sender, EventArgs e)
        {

            string messagePlain = "this is a message";

            string messageEncrypted = string.Empty;

            string messageDecrypted = string.Empty;


            Encriptar(ref messageEncrypted, ref messagePlain);
        }
__________________
Charlie.