Programación General > Visual C++
C++ Con Dll De Fortran
LauraDiaz:
Hola,
estoy generando en C++ una DLL para exponer métodos JNI y llamarlos desde Java. Esta parte me funciona correctamente. El problema lo tengo cuando desde el código C++ quiero hacer llamadas a unos métodos que existen en una DLL de Fortran que incluyo dentro de mi proyecto en C++ (MS Visual Studio)
Despues de leer la documentación al respecto mi código C++:
--- Código: Text --- // HBVMODELAPI.cpp : Defines the entry point for the DLL application.//#include "stdafx.h"#include "edu_uji_aware_hbv_HBVModel.h" extern "C" {void tuwhbv(long,float&,float&,float&,float&,float&,float&,float&,float&,long,float&,float&,float&,float&);} JNIEXPORT void JNICALL Java_edu_uji_aware_hbv_HBVModel_hbv(JNIEnv *env, jobject obj, jlong flag, jfloat ages, jfloat incon, jfloat inputt, jfloat gobs, jfloat modisa, jfloat param, jfloat lb, jfloat ub, jlong calid, jfloat weight, jfloat parfin, jfloat effin, jfloat output){ tuwhbv(flag, ages, incon,inputt,gobs,modisa,param,lb,ub,calid,weight,parfin,effin,output);} Al crear la DLL, obtengo el siguiente error:
Linking...
Creating library Release/HBVMODELAPI.lib and object Release/HBVMODELAPI.exp
HBVMODELAPI.obj : error LNK2001: unresolved external symbol _tuwhbv
Mi pregunta es la siguiente. además de haber incluido mi libreria dll de fortran con "Añadir fichero" al proyecto, debería hacer algo más? como inlcuir esta dll en algún "path".
alguna idea?
gracias y un saludo.
Laura.
Eternal Idol:
Necesitas enlazar contra el archivo de importacion (.lib) para que pueda resolver la funcion esa que no encuentra (tal vez tambien tengas que cambiar la convencion de llamada C por STDCALL).
JuanK:
Creo que este hilo debería estar en el foro de java. Aunque dudo que alguien de ahi le hubiera podido ayudar. En fin, dejo sembrada la inquietud. :ph34r:
Eternal Idol:
--- Cita de: "JuanK" --- Creo que este hilo debería estar en el foro de java. Aunque dudo que alguien de ahi le hubiera podido ayudar. En fin, dejo sembrada la inquietud. :ph34r:
--- Fin de la cita ---
No realmente, la primera parte de Java dice que le funciona. El problema es con una DLL escrita en Fortran :lol:
LauraDiaz:
hola de nuevo y gracias,
no he puesto mi problema en el foro de java porque la parte de enlazar java con C++ me esta funcionando correctamente, el problema lo tengo tratando de generar una Dll con visual studio que incluye unas librerias generadas en fortran.
bueno, el caso es que los binarios que tengo generados en fortran (me los pasa un compañero de proyecto) son un monton de obj, un dll, un lib y un exp. La cuestión es que independientemente de si añado todos o solo obj o solo dll y lib. sigo teniendo el mismo problema.
El metodo que llamo, si que se llama así por eso no se muy bien que esta pasando. He probado también a cambiar la llamada usando STDCall y tengo lo mismo.
Me pregunto si en las opciones de proyecto hay alguna forma de decirle que linke con alguna otra librería aparte de haber hecho Project-Add files...
alguna idea?
Laura.
Navegación
[#] Página Siguiente
Ir a la versión completa