您的位置:首页 > 其它

用FORTRAN编写DLL的问题

2011-10-24 19:42 162 查看
用 FORTRAN 编写 DLL,导出 subroutine,可以在别的编程语言中进行调用,很是方便。不过,遇到一些问题会让人恼火,特在这里记录一下。

1. 导出声明,子程序调用

导出的话,只要作如下声明即可。名称必须与子程序名称相同,否则就找不到了。调用的时候,一律使用大写。

!DEC$ ATTRIBUTES DLLEXPORT :: fortfunc

C 语言中使用需要先声明函数原型,可以这么写

// For DLL function import.

#define __DLLIMPORT__ __declspec(dllimport)

// Compatible for C

#ifdef __cplusplus

extern "C" {

#endif

__DLLIMPORT__ void FORTFUNC(int *, float *);

// __DLLIMPORT__ void FORTFUNC(int &, float &);

// Compatible for C

#ifdef __cplusplus

}

#endif

2. 参数传递

2.1 普通数据类型

2.2 数组

2.3 动态或不定长的数组

2.4 结构体

3. 错误语句

切忌使用 stop,否则会出错。

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

...

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: