将C库链接到Qt项目时出现问题
Problem with linking C library to Qt project
我知道这是一个 100 次讨论的话题,但经过多次尝试,我只是找不到解决方案,因为不了解情况 - 没有错误。我正在尝试将dll"C"库连接到我的项目,并在应用程序输出中收到一些疯狂的代码"...退出代码 -1073741515"以及空控制台,按下关闭此窗口...
所以,这是我的:mylib.c:
#include "mylib.h"
int mysum(int a, int b){
return a + b;
}
mylib.h:
#ifdef __cplusplus
extern "C" {
#endif
#define EXPORT __declspec(dllexport)
EXPORT int mysum(int, int);
#ifdef __cplusplus
}
#endif
testlib.pro:
QT -= gui
CONFIG += c++11 console
CONFIG -= app_bundle
SOURCES +=
main.cpp
LIBS += -L$$PWD/../../../../TestDLL/ -lmylib
INCLUDEPATH += $$PWD/../../../../TestDLL
DEPENDPATH += $$PWD/../../../../TestDLL
HEADERS +=
../../../../TestDLL/mylib.h
主.cpp:
#include <QCoreApplication>
#include "mylib.h"
#include <QtDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
qDebug()<<mysum(1,2);
return a.exec();
}
我想,我在专业文件中缺少一些链接的东西,但无法得到什么。TestDLL 是包含以下内容的文件夹:
Mylib.dll mylib.h mylib.c libmylib.a
要构建我使用的 DLL:
gcc -c mylib.c
gcc -shared -o mylib.dll -Wl,--out-implib,libmylib.a mylib.o
将不胜感激一些提示...谢谢
您必须操作编译器选项,以便:
-
构建库时,您有
#define EXPORT __declspec(dllexport)
-
使用库时,您有
#define EXPORT __declspec(dllimport)
一种方法是使用:
#if defined(BUILD_DLL)
#define EXPORT __declspec(dllexport)
#else
#define EXPORT __declspec(dllimport)
#endif
然后在生成 DLL 时使用 -DBUILD_DLL
,并在使用 DLL 时将其保留为未定义。
那么,我按照 Sahu 提示更改@R:
在 mylib.h 中:
#ifdef BUILDING_DLL
#define EXPORT __declspec(dllexport)
#else
#define EXPORT __declspec(dllimport)
#endif
对于编译 DLL:
gcc -c -DBUILDING_DLL mylib.c
gcc -shared -o mylib.dll mylib.o -Wl,--out-implib,libmylib.a
加上 .pro 文件中:
LIBS += "$$PWD/../../../../TestDLL/mylib.dll"
我相信,.pro文件中的行是最重要的。现在一切正常。
相关文章:
- Eulers 项目问题 no 345 听不懂几行代码
- 基本 Cuda C++项目集成问题
- C++ 从链表中删除项目时出现问题
- 双向链表问题 - 包含项目但不显示
- 在单元测试项目中包括 .c 文件,并从多个 cpp 文件访问它而不会出现链接问题
- 如何解决在 clr 项目的特定文件中写入数据的问题?
- 在Android Studio项目中使用tensorflow lite C++API的问题
- 相同的代码,不同的结果?从其他项目包含有什么问题?
- 我的自定义 C++ DLL 的 C# 项目中的 DLL 端口有什么问题?
- 在QtCreator中配置c ++项目时出现问题
- 编译示例 Cinder 项目时存在大量未解决的外部问题
- 将C库链接到Qt项目时出现问题
- VS 2017 C 静态LIB与 /MD项目依赖性问题编辑
- 测试项目在访问私有静态方法时遇到问题,尽管我从未直接调用过它
- 在 win32 控制台项目 VS2015 中静态链接 libcurl 的问题
- 鸟类调查中的项目在代码中遇到问题.如何像数据库系统一样存储数据
- 小型学校项目存在多个问题
- 为该项目报告C++奇怪的Klocwork问题
- 内存管理容器设计问题 - 项目需要继承
- 困难与问题.3项目欧拉(c++)