首页 / 浏览问题 / 组件GIS / 问题详情
extensions4Qt重新编译没有生成dll和lib文件问题
1EXP 2022年02月23日
重新编译extensions4Qt结果:

F:\projects\cpp\running\supermap\sample\extensions4Qt>tree debug /f
文件夹 PATH 列表
卷序列号为 104E-19F0
F:\PROJECTS\CPP\RUNNING\SUPERMAP\SAMPLE\EXTENSIONS4QT\DEBUG目录下生成文件:
    Extensions4Qt.vc.pdb
    GOCellListCtrl.obj
    GOPropertyPanel.obj
    GOPropertyTreeTools.obj
    GOSymbolListCtrl.obj
    GOSymbolPanel.obj
    GOToolKit.obj
    GraphLayer.obj
    gridgraph.obj
    LabelGraph.obj
    moc_GOCellListCtrl.cpp
    moc_GOCellListCtrl.obj
    moc_GOPropertyPanel.cpp
    moc_GOPropertyPanel.obj
    moc_GOSymbolListCtrl.cpp
    moc_GOSymbolListCtrl.obj
    moc_GOSymbolPanel.cpp
    moc_GOSymbolPanel.obj
    moc_PanelControl.cpp
    moc_PanelControl.obj
    moc_predefs.h
    moc_QDynamicLayers.cpp
    moc_QDynamicLayers.obj
    moc_qgiswidget.cpp
    moc_qgiswidget.obj
    moc_qmapcontrol.cpp
    moc_qmapcontrol.obj
    moc_qmapdrawthread.cpp
    moc_qmapdrawthread.obj
    moc_qteditorfactory.cpp
    moc_qtpropertybrowser.cpp
    moc_qtpropertybrowserutils_p.cpp
    moc_qtpropertybrowserutils_p.obj
    moc_qtpropertymanager.cpp
    moc_qttreepropertybrowser.cpp
    moc_qtvariantproperty.cpp
    PanelControl.obj
    QDynamicLayer.obj
    QDynamicLayers.obj
    QDynamicObject.obj
    qgiswidget.obj
    qmapcontrol.obj
    qmapdrawthread.obj
    qrc_resource.cpp
    qrc_resource.obj
    qteditorfactory.moc
    qteditorfactory.obj
    qtpropertybrowser.obj
    qtpropertybrowserutils.obj
    qtpropertymanager.moc
    qtpropertymanager.obj
    qttreepropertybrowser.moc
    qttreepropertybrowser.obj
    qtvariantproperty.obj
    translator.obj

VS编译错误:

错误    LNK2019    无法解析的外部符号 "__declspec(dllimport) public: void __cdecl OGDC::OgdcUnicodeString::Format(wchar_t const *,...)" (__imp_?Format@OgdcUnicodeString@OGDC@@QEAAXPEB_WZZ),函数 "public: static class OGDC::OgdcUnicodeString __cdecl UGC::UGS57Def::FormatConnectVertexRecordID(unsigned int)" (?FormatConnectVertexRecordID@UGS57Def@UGC@@SA?AVOgdcUnicodeString@OGDC@@I@Z) 中引用了该符号    Qt_supermap    F:\projects\cpp\qt\Qt_supermap    F:\projects\cpp\qt\Qt_supermap\MapControl.obj

1个回答

您好,您编译时报的错误是环境配置不正确的问题,麻烦您详细描述一下您使用的Qt、C++和Visual Studio的版本。

iObjects C++ 目前支持Qt5.x(5.6及以上版本),暂不支持Qt6.x。
2,248EXP 2022年02月23日

qt5.15.2 

gis组件:

SuperMap iObjects C++ 10i(2020)

  • (V10.1.2)

vs2019

就是运行博客的示例程序,一直报错:

我是看到了社区的帖子

这个错误:

错误    LNK2019    无法解析的外部符号 "__declspec(dllimport) public: void __cdecl OGDC::OgdcUnicodeString::Format(wchar_t const *,...)" (__imp_?Format@OgdcUnicodeString@OGDC@@QEAAXPEB_WZZ),函数 "public: static class OGDC::OgdcUnicodeString __cdecl UGC::UGS57Def::FormatConnectVertexRecordID(unsigned int)" (?FormatConnectVertexRecordID@UGS57Def@UGC@@SA?AVOgdcUnicodeString@OGDC@@I@Z) 中引用了该符号    Qt_supermap    F:\projects\cpp\qt\Qt_supermap    F:\projects\cpp\qt\Qt_supermap\MapControl.obj

是需要重新编译extensions4Qt,但是重新编译后并没有出现extensions4Qt.dll和extensions4Qt.lib,可见并不可行,

但是我VS的示例程序依然报错,环境我检查了好几遍了,编译依然报错,如上图所示,不清楚是什么原因导致的,,快绝望了
extension4Qt是Qt的项目,需要使用Qt Creator打开后进行编译生成extensions4Qt.dll和extensions4Qt.lib。编译成功后需要用你本地安装的Qt5.15.2中的Qt5Cored.dll、Qt5Guid.dll和Qt5Widgetsd.dll替换iObjects C++ 中"bin\bind_x64\"路径下的文件。VS中的项目除了配置iObjects C++教程中的那些环境变量,还需要修改您的项目输出目录到"bin\bind_x64\"路径下,才能够让您的C++程序正常运行。

iObjects C++ 的开发环境配置相比较iObjects Java/.Net来说更加复杂和繁琐,若有什么我没有说清楚的地方,您可以添加我的QQ(153895208),更加及时的为您解决C++开发环境上遇到的问题,谢谢。

希望可以帮到您。
...