【发布时间】:2015-12-17 16:29:15
【问题描述】:
我第一次使用 QT 创建器创建了一个与 C++ 一起使用的 dll(然后是 C#,我计划在 C++ 和 C# 应用程序之间共享这个 dll),但是当我尝试使用它时出现 SEGFAULT 错误。
这是我的文件:
mydll.h
#ifndef MYDLL_H
#define MYDLL_H
#include "mydll_global.h"
class MYDLLSHARED_EXPORT MyDll
{
public:
MyDll();
int getAnswer();
};
MYDLLSHARED_EXPORT int getNumber();
#endif // MYDLL_H
mydll_global.h
#ifndef MYDLL_GLOBAL_H
#define MYDLL_GLOBAL_H
#include <QtCore/qglobal.h>
#if defined(MYDLL_LIBRARY)
# define MYDLLSHARED_EXPORT Q_DECL_EXPORT
#else
# define MYDLLSHARED_EXPORT Q_DECL_IMPORT
#endif
#endif // MYDLL_GLOBAL_H
mydll.cpp
#include "mydll.h"
MyDll::MyDll()
{
}
int MyDll::getAnswer()
{
return 42;
}
int getNumber()
{
return 10;
}
所以我构建它并创建了mydll.dll:然后我去了其他 C++ 项目,我想使用这个 dll 并放入 .pro 文件:
LIBS += "C:\path\to\mydll.h"
在 main.cpp 中
#include "mydll.h"
当我像这样使用 dll 中的函数时:
qDebug() << getNumber();
我收到 SEGFAULT 错误。
我认为提供编译器类型信息的标头和提供函数体的编译器的 dll 是我所需要的,但是当我得到 SEGFAULT 时,我正在访问 NULL 或其他人的内存或所以(我在调试时看不到值)。
我错过了什么?
【问题讨论】:
标签: c++ qt dll segmentation-fault