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);
}