【问题标题】:Library linking using wxWidgets through Cygwin通过 Cygwin 使用 wxWidgets 进行库链接
【发布时间】:2016-12-12 04:11:42
【问题描述】:

我一直在尝试让 wxWidgets 在 Cygwin 上运行。到目前为止,我已经通过使用 cygwin 安装程序提供的 mingw 编译器取得了成功。
构建似乎工作正常。我使用的配置消息是:
configure --host=i686-w64-mingw32 --build=i686-pc-cygwin --enable-static --disable-shared
之后我运行了 make 和 make install 并没有出现任何错误。

接下来,我从a tutorial 中获取了一个示例并运行:
i686-w64-mingw32-g++ -c -o hello_world.o hello_world.cpp CXX_FLAGS
i686-w64-mingw32-g++ -o a hello_world.o CXX_FLAGS LIBS
其中 CXX_FLAGS 和 LIBS 是从 wx-config -cxxflagswx-config --libs 生成的。这工作正常,但当我尝试运行可执行文件时,我收到此错误:
C:/Users/sam/Documents/cpp/wxwidgets_tutorial/a.exe: error while loading shared libraries: ?: cannot open shared object file: No such file or directory

我构建的库应该是静态的,所以我不确定如何处理此消息。非常感谢任何帮助!


更多信息:

wx-config --cxxflags 给出输出:
-I/usr/local/lib/wx/include/i686-w64-mingw32-msw-unicode-static-3.0 -I/usr/local/include/wx-3.0 -D_FILE_OFFSET_BITS=64 -D__WXMSW__ -mthreads

wx-config --libs 给出输出:
-L/usr/local/lib -Wl,--subsystem,windows -mwindows /usr/local/lib/libwx_mswu_xrc-3.0-i686-w64-mingw32.a /usr/local/lib/libwx_mswu_webview-3.0-i686-w64-mingw32.a /usr/local/lib/libwx_mswu_qa-3.0-i686-w64-mingw32.a /usr/local/lib/libwx_baseu_net-3.0-i686-w64-mingw32.a /usr/local/lib/libwx_mswu_html-3.0-i686-w64-mingw32.a /usr/local/lib/libwx_mswu_adv-3.0-i686-w64-mingw32.a /usr/local/lib/libwx_mswu_core-3.0-i686-w64-mingw32.a /usr/local/lib/libwx_baseu_xml-3.0-i686-w64-mingw32.a /usr/local/lib/libwx_baseu-3.0-i686-w64-mingw32.a -lpng -ljpeg -ltiff -lexpat -lwxregexu-3.0-i686-w64-mingw32 -lz -lrpcrt4 -loleaut32 -lole32 -luuid -lwinspool -lwinmm -lshell32 -lcomctl32 -lcomdlg32 -ladvapi32 -lwsock32 -lgdi32

ls /usr/local/lib:
libwx_baseu_net-3.0-i686-w64-mingw32.a libwx_baseu_xml-3.0-i686-w64-mingw32.a libwx_baseu-3.0-i686-w64-mingw32.a libwx_mswu_adv-3.0-i686-w64-mingw32.a libwx_mswu_aui-3.0-i686-w64-mingw32.a libwx_mswu_core-3.0-i686-w64-mingw32.a libwx_mswu_gl-3.0-i686-w64-mingw32.a libwx_mswu_html-3.0-i686-w64-mingw32.a libwx_mswu_media-3.0-i686-w64-mingw32.a libwx_mswu_propgrid-3.0-i686-w64-mingw32.a libwx_mswu_qa-3.0-i686-w64-mingw32.a libwx_mswu_ribbon-3.0-i686-w64-mingw32.a libwx_mswu_richtext-3.0-i686-w64-mingw32.a libwx_mswu_stc-3.0-i686-w64-mingw32.a libwx_mswu_webview-3.0-i686-w64-mingw32.a libwx_mswu_xrc-3.0-i686-w64-mingw32.a libwxregexu-3.0-i686-w64-mingw32.a libwxscintilla-3.0-i686-w64-mingw32.a wx

编辑:

按照 VZ 的建议,我将 /usr/i686-w64-mingw32/sys-root/mingw/bin 添加到我的路径中......它编译了!
但是在运行时,程序不会打开任何窗口,只是立即退出。这仍然是图书馆的问题吗?

【问题讨论】:

  • 您是否将dll复制到a.exe所在的目录,或者您是否使用环境变量将库注册到Windows。

标签: c++ cygwin mingw static-libraries wxwidgets


【解决方案1】:

您需要将所需的 DLL(至少 libstdc++-6.dlllibgcc_s_sjlj-1.dll)从 /usr/i686-w64-mingw32/sys-root/mingw/bin 复制到您的 PATH 或应用程序目录中的目录(或将此目录本身添加到您的 PATH,当然)。

您可以使用cygcheck 或(本机)dependency walker 工具来查找实际缺少的 DLL。

【讨论】:

    猜你喜欢
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    • 2014-01-17
    • 1970-01-01
    • 2011-04-08
    • 1970-01-01
    • 1970-01-01
    • 2016-04-18
    相关资源
    最近更新 更多