用 FORTRAN 编写 DLL 的问题
用 FORTRAN 编写 DLL,导出 subroutine,可以在别的编程语言中进行调用,很是方便。不过,遇到一些问题会让人恼火,特在这里记录一下。
1. 导出声明,子程序调用
导出的话,只要作如下声明即可。
名称必须与子程序名称相同,否则就找不到了。调用的时候,一律使用大写。
- !DEC$ ATTRIBUTES DLLEXPORT :: fortfunc
C 语言中使用需要先声明函数原型,可以这么写
-
- #define __DLLIMPORT__ __declspec(dllimport)
-
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- __DLLIMPORT__ void FORTFUNC(int *, float *);
-
-
-
- #ifdef __cplusplus
- }
- #endif
2. 参数传递
2.1 普通数据类型
2.2 数组
2.3 动态或不定长的数组
2.4 结构体
3. 错误语句
切忌使用 stop,否则会出错。
错误指向
- inline void* CThreadSlotData::GetThreadValue(int nSlot)
- {
- EnterCriticalSection(&m_sect);
- ASSERT(nSlot != 0 && nSlot < m_nMax);
- ASSERT(m_pSlotData != NULL);
- ASSERT(m_pSlotData[nSlot].dwFlags & SLOT_USED);
- ASSERT(m_tlsIndex != (DWORD)-1);
- ...
- }
阅读(3456) | 评论(0) | 转发(0) |