我在C ++和FORTRAN之间进行一些混合编程。关于将字符数组从FORTRAN传递到C ++的问题出现了,如代码所示。
CDll.h:
for ($i = 0; $i < $some_limiting_factor_here; $i++)
CDll.cpp:
// CDll.h
#pragma once
#ifdef __cplusplus
extern "C" {
#endif
#define DLLEXPORT __declspec(dllexport)
DLLEXPORT void testchararray(char arr[][10]);
#ifdef __cplusplus
}
#endif
FMain.f90:
// CDll.cpp
#ifndef __cplusplus
#define __cplusplus
#endif
#include "CDll.h"
#include <iostream>
using namespace std;
void testchararray(char arr[][10])
{
cout << arr << endl;
}
CDll.h和CDll.cpp生成到DLL中并通过FORTRAN主程序链接。
调用子例程之前和之后的内存地址彼此不一致,因此字符数组未正确传递。我这样做是错误的还是还有什么我还没有注意到的?谢谢你的帮助。
PS:该项目是在x64平台上调试的。