小编Max*_*nov的帖子

Qt 5.5与qmake:链接器无法解析OpenGL函数调用

当使用Qt 5.5,qmake和MSVC 13来编译带有一些基本OpenGL函数调用的基本的样板Qt应用程序时,我得到以下链接器错误:

glwidget.obj:-1: error: LNK2019: unresolved external symbol __imp__glClear@4 referenced in function "public: virtual void __thiscall GLWidget::initializeGL(void)" (?initializeGL@GLWidget@@UAEXXZ)
glwidget.obj:-1: error: LNK2019: unresolved external symbol __imp__glClearColor@16 referenced in function "public: virtual void __thiscall GLWidget::initializeGL(void)" (?initializeGL@GLWidget@@UAEXXZ)
debug\OpenGLApp.exe:-1: error: LNK1120: 2 unresolved externals
Run Code Online (Sandbox Code Playgroud)

我有:

  • 指定的QT + = opengl
  • 明确指定CONFIG + = windows(显然+ = console禁用gui功能)

.pro文件:

QT       += core gui opengl widgets

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets opengl

TARGET = OpenGLApp
TEMPLATE = app

CONFIG += windows

SOURCES += main.cpp\
        mainwindow.cpp \
    glwidget.cpp …
Run Code Online (Sandbox Code Playgroud)

c++ opengl qt qmake

6
推荐指数
1
解决办法
6859
查看次数

Qt 5.5和Qt Installer Framework 2.0.1:尽管存在于config.xml中,但不显示徽标

我使用预编译的Qt Installer Framework二进制文件2.0.1版为我的应用程序编写了一个安装程序.但是,安装程序窗口不会以任何可能的方式显示我的任何徽标.

有问题的徽标名为"installerlogo.png",一个带有alpha通道的64x64图像,位于安装程序目录结构的顶部(与config /和packages /目录所在的目录相同.)

我为了一个名为"installericon.ico"的图标制作了另一个徽标,这只是上面的16x16版本,只是重命名为".ico"(这是错误的方法吗?)

我在config.xml文件中尝试了以下内容:

<InstallerApplicationIcon>installericon</InstallerApplicationIcon>
<InstallerWindowIcon>installerlogo</InstallerWindowIcon>
<Logo>installerlogo.png</Logo>
<Background>installerlogo.png</Background>
Run Code Online (Sandbox Code Playgroud)

但没有一个产生任何视觉效果.

c++ qt qt-installer

6
推荐指数
1
解决办法
1255
查看次数

在C中编写bootsector:阻止生成堆栈指针初始化

在修改程序集中编写bootsector代码之后,我想知道我是否可以在C中执行相同操作.到目前为止,空函数中的代码生成如下:

在C:

void _start() {
halt:
    goto halt;
}
Run Code Online (Sandbox Code Playgroud)

随后的asm(由GCC生成):

7c00:   55                      push   %bp
7c01:   89 e5                   mov    %sp,%bp
7c03:   eb fe                   jmp    0x7c03
Run Code Online (Sandbox Code Playgroud)

但是,是否可以指定对于此(入口)函数,我不希望初始化基本和堆栈指针?BIOS将控制权直接传输到0x7c00,因此设置堆栈指针的前两条指令是冗余的.

我已经尝试添加__attribute__ ((always_inline, noreturn, regparm(0)))到函数声明,但似乎没有做任何事情.

c assembly gcc mbr gnu-assembler

6
推荐指数
1
解决办法
845
查看次数

无效的基/索引表达式

尝试使用基索引表达式在 16 位实模式下操作内存会导致编译错误:

movw    $0xd000, -2(%sp)
movw    $0, -4(%sp)
movw    $1, -6(%sp)
Run Code Online (Sandbox Code Playgroud)

编译为

gcc -c -Wa,--32 $(DIR_BS_SRC)/mbr.S -o $(DIR_BS_SRC)/mbr.o
ld -nostdlib --oformat binary --Ttext 0x7c00 $(DIR_BS_SRC)/mbr.o -o $(DIR_B$
Run Code Online (Sandbox Code Playgroud)

产生以下错误:

bootsector/src/mbr.S:20: Error: `-2(%sp)' is not a valid base/index expression
bootsector/src/mbr.S:21: Error: `-4(%sp)' is not a valid base/index expression
bootsector/src/mbr.S:22: Error: `-6(%sp)' is not a valid base/index expression
Run Code Online (Sandbox Code Playgroud)

我认为这是有效的语法,即使在 16 位实模式下也是如此?

x86 assembly real-mode gnu-assembler

4
推荐指数
1
解决办法
5677
查看次数

git:如何应用有冲突的补丁?

我有一个补丁,我想应用到我的本地树上。它是使用git format-patch. 它包含一些冲突,因此我使用以下内容来应用它:

$ git apply --3way mypatch.patch

这样,当我应用它时,我可以手动打开未能合并的文件。但是,一旦我这样做了,我想“完成”应用补丁——我的意思是,我想告诉 git“好吧,我已经完成了手动解决冲突——现在继续应用这个补丁补丁中的提交消息,以及补丁中指定的作者”。

然而,一旦出现合并冲突,git 就会放弃并将一切交给你。有没有办法告诉 git,“嘿,对于这个提交,请从这个补丁中获取提交信息和作者详细信息”?或者告诉 git,“您可以照常继续补丁应用程序”的方法?

git

3
推荐指数
1
解决办法
180
查看次数

Qt 5.5和OpenGL:检索设备信息

我编写了一个Qt 5.5应用程序,它以QOpenGLWidget的形式使用OpenGL.现在我想要它,以便用户可以从应用程序中看到他们的设备信息.通过这个我的意思是:

  • 卡片的名称,例如"GT 640"
  • 供应商
  • 总GPU内存
  • 驱动版本
  • 扩展名单

到目前为止,我自己一直无法找到任何相关的功能.虽然我知道这可以通过调用OpenGL来完成,但我宁愿将所有代码保持在相对较高的水平.我从2004年发现这篇非常古老的文章说Qt没有这个功能,但也许有些时候已经改变了?

c++ opengl qt

2
推荐指数
1
解决办法
1791
查看次数

Gnu AS似乎没有预处理#defines,但GCC确实如此

我有大量的常量,这些常量被越来越多的源文件使用.我需要能够玩它的价值,所以在一个地方定义它很方便.

我的情况的一个例子如下:

我定义变量的头文件rmode_loc.h:

#define __ASSEMBLER__

#define BSEQ_HI 0xF000
#define BSEQ_LO 0x0000
Run Code Online (Sandbox Code Playgroud)

我们(应该)使用的一些代码的摘录,myprog.S:

.code16

/* Include constants */
#include "rmode_loc.h"

_start:

    ...

    push    $BSEQ_HI

    ...

    mov $BSEQ_LO, %bx
Run Code Online (Sandbox Code Playgroud)

但是,在尝试编译时,链接器会报告以下错误:

myprog.o: In function `_start':
(.text+0x1b): undefined reference to `BSEQ_HI'
myprog.o: In function `_start':
(.text+0x1f): undefined reference to `BSEQ_LO'
Run Code Online (Sandbox Code Playgroud)

显然正在尝试链接这些"符号" - 因此我得出结论,预处理器没有将符号替换为值所表示的值rmode_loc.h.

我读了另一个SO帖子(找不到链接),其中提到如果源文件的扩展名.s没有预处理会发生,并且__ASSEMBLER__还给出了定义的建议- 但是,这似乎不是在这里发布,因为所有的源都有.S扩展,我#define __ASSEMBLY__在标题中添加了一个.

然而,使用GCC作为前端进行编译时,即gcc myprog.S -o myprog,将BSEQ标签正确更换,一切编译.

我的问题是,在使用as而不是gcc产生这些结果时,预处理有什么区别,在使用gcc编译汇编代码时是否有任何重大的技术差异as

assembly gcc gnu-assembler c-preprocessor

1
推荐指数
1
解决办法
210
查看次数

VHDL:条件信号分配的简明表达

以下代码是4:1多路复用器.如果dis信号为"1",则所有输出引脚上的输出应为0.是否有一种简洁的方式来表明如果dis为高,则输出应该为0,无论如何sel,而不必通过每个组合进行置换sel

我知道在某些情况下,如果条件赋值不明确,则可能会出现意外的锁存器生成以及其他不希望的副作用.

architecture dataflow of mux8_4 is
begin
    q <=d0 when sel = "00" and dis = '0' else
        d1 when sel = "01" and dis = '0' else
        d2 when sel = "10" and dis = '0' else
        d3 when sel = "11" and dis = '0' else
        "00000000" when sel = "00" and dis = '1' else
        "00000000" when sel = "01" and dis = '1' else
        "00000000" when sel …
Run Code Online (Sandbox Code Playgroud)

syntax vhdl

1
推荐指数
1
解决办法
212
查看次数

无法理解启用GDT分段,即更新CS寄存器

我目前正在遵循启用GDT细分的指南.我正在使用GNU Assembler和Bochs进行仿真.

我知道我需要使用GDT描述符加载GDT寄存器.我已经完成了,接下来的步骤是将所有具有相对于GDT的偏移的段寄存器加载到代码/数据段描述符的各个位置.这样做的代码如下:

reloadSegments:
   ; Reload CS register containing code selector:
   JMP   0x08:reload_CS ; 0x08 points at the new code selector
.reload_CS:
   ; Reload data segment registers:
   MOV   AX, 0x10 ; 0x10 points at the new data selector
   MOV   DS, AX
   MOV   ES, AX
   MOV   FS, AX
   MOV   GS, AX
   MOV   SS, AX
   RET
Run Code Online (Sandbox Code Playgroud)

但是,我无法理解如何可以隐式加载具有偏移量的CS寄存器,而不会显着跳跃到CS:IP对指向的任何内存位置 - 即,如果代码段描述符位于GDT_start + 0x10,我尝试将0x10加载到CS寄存器,虚拟机跳转到0x10:IP,我从不输入.reload_CS标签.

我的例程版本(at&t语法):

_start:
    // Disable interrupts
    cli
    // Load GDT register with location of GDT
    lgdt    0x3c

    // Load location of Code …
Run Code Online (Sandbox Code Playgroud)

x86 assembly gnu-assembler osdev

0
推荐指数
1
解决办法
741
查看次数

标签 统计

assembly ×4

gnu-assembler ×4

c++ ×3

qt ×3

gcc ×2

opengl ×2

x86 ×2

c ×1

c-preprocessor ×1

git ×1

mbr ×1

osdev ×1

qmake ×1

qt-installer ×1

real-mode ×1

syntax ×1

vhdl ×1