Hola,
Gracias por tu respuesta. El mismo día que la recibí intenté responderte pero hubo un problema y no se si te llego.
No entiendo a que te refieres con que deben cumplir con el estándar del viejo WinAPI y lo de agregar las declaraciones en el archivo .DEP del proyecto.
Ahora mismo mi problema está en la llamada que se hace desde la función C++ al método en C#:
String^ result = DataType::Test::tranform("Brigde Java to C# DLL");
Si esta llamada la hago en el método main del proyecto, genero un exe y lo ejecuto funciona perfectamente.
int _tmain(int argc, _TCHAR* argv[])
{
String^ result = DataType::Test::tranform("Brigde Java to C# DLL");
}
En cambio si la invoco desde la función que se llamaría desde Java
/*
* Class: com_mycompany_dll_Test
* Method: SendAndReceiveString
* Signature: (Ljava/lang/String;)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_com_mycompany_dll_Test_SendAndReceiveString
(JNIEnv *env, jobject, jstring input){
const char *nativeText = env->GetStringUTFChars(input, JNI_FALSE);
String^ ssText = gcnew String(nativeText);
String^ result = DataType::Test::tranform("Brigde Java to C# DLL");
const char *nativeResult = (const char*)(Marshal::StringToHGlobalAnsi(result)).ToPointer();
jstring jsResult = env->NewStringUTF(nativeResult)
}
Si sustituyo la línea que invoca al método de la dll en C# y pongo
String^ result = gcnew String("Brigde Java to C# DLL");
la invocación desde Java a la dll funciona perfectamente.
El error que me da es el siguiente:
#
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (0xe0434f4d), pid=7024, tid=6768
#
# JRE version: 6.0_22-b04
# Java VM: Java HotSpot(TM) Client VM (17.1-b03 mixed mode windows-x86 )
# Problematic frame:
# C [kernel32.dll+0x12fd3]
#
# An error report file with more information is saved as:
# D:\WorkspaceSTS38\TestLibrary\hs_err_pid7024.log
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#