- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我想用 C 编写一个多平台的本地桌面应用程序。经过一番搜索,我找到了 IUP完美契合。不幸的是,我正在努力链接 Windows SDK。现在,我只想为 Windows 8.1 静态编译 x64 版本。当我编译 this Code::Blocks 中的示例,我收到以下错误:
g++.exe -LC:\MinGW\iup -o "bin-debug\EVE Editor.exe" obj-debug\main.o -lgdi32 -luser32 -lkernel32 -lcomctl32 -lole32 -lfreetype6 -liup -liup_mglplot -liup_plot -liup_scintilla -liupcd -liupcontrols -liupgl -liupglcontrols -liupim -liupimglib -liupmatrixex -liupole -liuptuio -lz
C:\MinGW\iup/libiup.a(iupwin_font.o):iupwin_font.c:(.text+0x1db): undefined reference to `__imp_CreateFontW'
C:\MinGW\iup/libiup.a(iupwin_font.o):iupwin_font.c:(.text+0x224): undefined reference to `__imp_SelectObject'
C:\MinGW\iup/libiup.a(iupwin_font.o):iupwin_font.c:(.text+0x240): undefined reference to `__imp_GetTextMetricsW'
C:\MinGW\iup/libiup.a(iupwin_font.o):iupwin_font.c:(.text+0x684): undefined reference to `__imp_SelectObject'
C:\MinGW\iup/libiup.a(iupwin_font.o):iupwin_font.c:(.text+0x734): undefined reference to `__imp_GetTextExtentPoint32W'
等等等等。 Here IUP 文档说“对于 Windows,如果您将应用程序与 IUP 静态链接,则还必须链接库 ole32.lib 和 comctl32.lib(随编译器提供)。”所以我从here获得了Windows SDK并用 ole32 和 comctl32 重新编译。我得到了同样的错误。我还在同一页上查看了 Code::Blocks 指南,但它是用于动态链接的。
我以前从未链接过 Windows SDK,所以我很茫然。这是我的 Code::Blocks 项目:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_project_file>
<FileVersion major="1" minor="6" />
<Project>
<Option title="EVE Editor" />
<Option pch_mode="2" />
<Option compiler="gcc" />
<Build>
<Target title="Debug">
<Option output="bin-debug/EVE Editor" prefix_auto="1" extension_auto="1" />
<Option object_output="obj-debug/" />
<Option type="1" />
<Option compiler="gcc" />
<Compiler>
<Add option="-g" />
</Compiler>
</Target>
<Target title="Release">
<Option output="bin/EVE Editor" prefix_auto="1" extension_auto="1" />
<Option object_output="obj/" />
<Option type="0" />
<Option compiler="gcc" />
<Compiler>
<Add option="-O2" />
</Compiler>
<Linker>
<Add option="-s" />
</Linker>
</Target>
</Build>
<Compiler>
<Add option="-Wall" />
<Add directory="C:/MinGW/iup/include" />
</Compiler>
<ResourceCompiler>
<Add directory="C:/MinGW/iup/etc" />
</ResourceCompiler>
<Linker>
<Add library="gdi32" />
<Add library="user32" />
<Add library="kernel32" />
<Add library="comctl32" />
<Add library="ole32" />
<Add library="libfreetype6.a" />
<Add library="libiup.a" />
<Add library="libiup_mglplot.a" />
<Add library="libiup_plot.a" />
<Add library="libiup_scintilla.a" />
<Add library="libiupcd.a" />
<Add library="libiupcontrols.a" />
<Add library="libiupgl.a" />
<Add library="libiupglcontrols.a" />
<Add library="libiupim.a" />
<Add library="libiupimglib.a" />
<Add library="libiupmatrixex.a" />
<Add library="libiupole.a" />
<Add library="libiuptuio.a" />
<Add library="libz.a" />
<Add directory="C:/MinGW/iup" />
</Linker>
<Unit filename="main.c">
<Option compilerVar="CC" />
</Unit>
<Extensions>
<code_completion />
<envvars />
<debugger />
<lib_finder disable_auto="1" />
</Extensions>
</Project>
</CodeBlocks_project_file>
最佳答案
尝试更改链接完成的顺序。依赖顺序必须颠倒,我的意思是最后依赖最少的库。例如:
<Add library="libiupcontrols.a" /> -- optional
<Add library="libiupcd.a" /> -- optional
<Add library="libcd.a" /> -- optional
<Add library="libfreetype6.a" /> -- optional
<Add library="libz.a" /> -- optional
<Add library="libiup.a" />
<Add library="gdi32" />
<Add library="user32" />
<Add library="kernel32" />
<Add library="comctl32" />
<Add library="ole32" />
而且您不需要包含所有 IUP 库,只需包含您实际使用的库即可。
关于c - IUP - Windows SDK 静态链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42660587/
我尝试创建的图形用户界面遵循这个简单的逻辑: IupDialog: IupVbox Iup split IupList IupList 列表应该填充拆分,并在需要时有滚动条。这是可行的,但是,如果我稍
首先抱歉我的英语不好。我对 IupParamBox 有疑问,我想在可以更改设置的程序中使用 IupParamBox 创建一个设置列表。我尝试使用 IupGetParam 函数,但我不能将 IupGet
1)我尝试将 ico 图像加载到 IUPbutton 但没有成功。 链接 IM dll 并添加适当的 header 后,这是我的方法: Ihandle *btn1, *btn2; Ihandle* i
我在 Manjaro GNU/Linux 上使用 IUP,我正在尝试编译来自 this site 的第一个示例程序.但是,编译器说它找不到 iup.h。我使用 yaourt 安装了 IUP,安装了名为
我想用 C 编写一个多平台的本地桌面应用程序。经过一番搜索,我找到了 IUP完美契合。不幸的是,我正在努力链接 Windows SDK。现在,我只想为 Windows 8.1 静态编译 x64 版本。
我构建了一个长时间运行的脚本,并在其中添加了一个带有以下代码的进度条: function StartProgressBar() gaugeProgress = iup.gaugeProgress
使用 IUP 版本 3.16,我无法更改开关的前景文本颜色。 Ihandle *MainHbox = IupHbox ( CheckBox = IupToggle("Checkbox Label"
在 MacOS 上使用 IUP 时,你们是否遇到过这个问题? Gizak-Pro:iup-3.6_MacOS107_bin Gizak$ ./iupview dyld: Library not loa
我尝试在c中使用IUP 我测试了这个例子 #include #include int main(int argc, char **argv) { Ihandle *dlg, *label;
请有人帮助我在 Linux 中使用 C 语言的 IUP 可移植用户界面工具包开发应用程序(更具体地说,Ubuntu 12.04_amd64(实际上我正在使用基本的 :P)和 Linux 3.2.0-5
我正在尝试让 IUP 在 Ubuntu 上运行。我从 sourceforge 下载了二进制文件,库似乎在/usr/lib/libiup*.so 中,但是当我编写如下脚本时: require("iupl
我爱上了 IUP!但是,我无法弄清楚如何以编程方式访问(在 C 中)由 IupLoad() 加载的对话框中的 GUI 元素。来自 LED 文件。 一种极其费力的方法是编辑 LED 文件,以便手动为每个
我是一名优秀的程序员,十分优秀!