内存参考不一致

时间:2018-04-19 09:38:29

标签: c++ fortran mixed-programming

我在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平台上调试的。

0 个答案:

没有答案