我还是没搞定。让我回答一些被问到的问题:
1) Windows 没有加载依赖项,我认为因为 Dependency Walker 显示一切正常。2) 我附加了一个调试器,它在尝试加载 MatrixWorkset.dll 时基本上会打印以下内容:
10:04:19.234
stdout:&"警告:从 D:/ScinericSoftware/VisualWorkspace/trunk/Targets/bin/MatrixWorkset.dll 加载组件\n"
10:04:19.234
标准输出:&"\n"
状态:已停止:“收到信号”
状态:停止。
10:04:19.890
stdout:30*stopped,reason="signal-received",signal-name="SIGSEGV",signal-meaning="Segmentation fault",thread-id="1",frame={addr="0x7c919994",func= "towlower",args=[],from="C:\\WINDOWS\\system32\\ntdll.dll"}
输入:31信息共享
输入:32 堆栈列表参数 2 0 0
输入:33-stack-list-locals 2
输入:34 堆栈列表帧
输入:35-thread-list-ids
输入:36 数据列表寄存器值 x
10:04:19.890
3)MSalters:我不确定您所说的“具有类类型的全局”是什么意思。出现问题的文件已包含在另一个 DLL 中,在该 DLL 中运行良好并且 DLL 加载成功。
这是 MatrixVariable.h 文件的顶部:
#include "QtSF/Variable.h" // 位于依赖 DLL(该文件始终存在的 DLL。
#include "Matrix.h" // 位于此 DLL 中的文件
#include "QList" // 这些都是来自 Qt 框架的文件
#include "QModelIndex"
#include "QItemSelection"
#include “QObject”
使用命名空间 Zenautics;
使用命名空间标准;
类 MatrixVariable:公共变量
{
Q_OBJECT
Q_PROPERTY(int RowCount READ rowCount WRITE setRowCount)
Q_PROPERTY(int ColumnCount READ columnCount WRITE setColumnCount)
Q_PROPERTY(int UndoPoints READ undoPoints WRITE setUndoPoints)
上市:
//! 默认构造函数。
MatrixVariable(const QString& name, int rows, int cols, double fill_real = 0, double fill_complex = 0, bool isReal = true);
等等等等等等
一种可能的解决方案是将 MatrixVariable 文件放回原始 DLL 中,但这违背了将 DLL 拆分为更小的部分的整个想法,这并不是一个真正的选择。