关于QT程序调用Fortran生成的Dll的问题,求解答!!

题目描述

QT+VS2017 无法调用Fortran生成的DLL

题目来源及自己的思路

自己学习中遇到的问题,当时以为是路径的问题,但是我用绝对路径也不行,把dll文件拷到exe目录也不行。

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)
1、用LoadLibrary()

#include "Test00.h"
#include<Windows.h>
#include<qmessagebox.h>
typedef int(*FUNCTIONABZERO)(int input);

Test00::Test00(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);
    loadDll = LoadLibrary(TEXT("C:\VisualStudioWorkspace\QtStudy\Test00\Test00\TestDll.dll"));
    if (loadDll == NULL)
    {
        QMessageBox::warning(this, QStringLiteral("警告!"), QStringLiteral("载入库文件失败!"), QMessageBox::Yes);
    }
}

void Test00::on_startBtn_clicked()
{
    FUNCTIONABZERO ABZERO = (FUNCTIONABZERO)GetProcAddress(loadDll,"ABZERO");
    if (ABZERO==NULL)
    {
        QMessageBox::warning(this, QStringLiteral("警告!"), QStringLiteral("函数不存在!"), QMessageBox::Yes);
    }
    else
    {
        int a = ui.arg1->text().trimmed().toInt();
        int result = ABZERO(a);
        ui.result->setText(QString::number(result));
    }
}

2、换用QLibrary

QLibrary myDLL("C:\VisualStudioWorkspace\QtStudy\Test00\Test00\TestDll.dll");
    if (myDLL.load())
    {
        QMessageBox::information(this,"OK","DLL is loaded! ");
    }
    else
    {
        QMessageBox::warning(this,"Warning","DLL load failure!");
    }

你期待的结果是什么?实际看到的错误信息又是什么?

希望大佬解惑!!!

阅读 3k
1 个回答

已解决!!Fortran生成dll时没配置,默认生成32位的dll了。而我的QT程序是64位的,我又重新把dll生成64位的没问题了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题