问题背景:
客户给了一个fortran创建的动态库,让我们测试是否可以使用。前提:我们是nodejs项目。
问题现象:
经过一系列折腾之后,客户给过来了正确动态库。
(1)nodejs直接调用so:ffi编译出现一堆环境问题且这种方式仅能调用c语言编写的动态库,客户提供的是fortran库,遂放弃。
(2)gcc直接编译demo工程,可以调用。gcc test.cpp xxx.so -o myout
(3)cmake中编译demo调用fortran库,一直报找不见该动态库。
解决办法:
CMakeLists.txt中增加以下:
- SET(CMAKE_Fortran_COMPILE "fortran编译器")
- ENABLE_LANGUAGE(Fortran)
- ...
-
- SET_TARGET_PROPERTIES(targetName PROPERTIES LINKER_LANGUAGE Fortran)
建议将动态库改名为lib开头。