用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);
...
}
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);
...
}
相关文章推荐
- 用 FORTRAN 编写 DLL 的问题
- 用VS2010编写Python的dll扩展问题
- VC中编写DLL的函数声明问题
- 在delphixe7 编写dll中发现的问题s
- Win7下安装Visual Studio2015编写VC++,遇到无法找到ucrtbased.dll的问题
- 使用QT+MSVC编写32/64位动态库dll的问题记录
- Delphi中的DLL封装和调用对象编写碰到的问题
- c#编写dll 供其他语言调用问题
- 编写动态链接库(dll)时容易出现的问题
- C#调用C编写的dll需要注意的几个问题
- 纯资源DLL编写 及相对路径问题解决
- [VC]关于ocx控件的自己编写的dll问题
- 编写类的DLL时,类中用到ADO数据库,出现类型重定义的问题解决及原因!!
- 编写DLL遇到的小问题
- 编写DLL过程中遇到的一些问题
- C#调用FORTRAN编写的DLL
- c#程序调用c++编写dll需要注意问题
- windows下的动态链接问题(.dll文件的编写与调用)
- java调用CC++编写的DLL文件问题
- 关于VS2005中编写DLL的一个异常问题