关于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!");
}
你期待的结果是什么?实际看到的错误信息又是什么?
希望大佬解惑!!!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
已解决!!Fortran生成dll时没配置,默认生成32位的dll了。而我的QT程序是64位的,我又重新把dll生成64位的没问题了