小编Mas*_*ari的帖子

Qt + MinGW +对"WinMain @ 16"问题的另一个未定义的引用

我知道,我挖了整个互联网,以找出问题是什么,到目前为止没有任何帮助.

我在Windows 7上,使用:

Qt 4.8.3: https://download.qt.io/archive/qt/4.8/4.8.3/qt-win-opensource-4.8.3-mingw.exe
MinGW32 4.4.0: http://nosymbolfound.blogspot.com/2012/12/since-until-now-qt-under-windows-is.html
Run Code Online (Sandbox Code Playgroud)

我分叉了一个名为QLC的项目,但是作者没有给我支持在Windows上编译.我按照他的指示,但我猜他们已经过时了.

我可以用Qt Creator编译任何Qt演示示例,所以我相信我的系统工作正常.
在尝试编译程序时,我遇到了众所周知的问题:

g++ -enable-auto-import -o libqlcengine.a object_script.libqlcengine.Debug  -L".\lib" -L"c:\Qt\4.8.3\lib" -lwinmm -L../../hotplugmonitor/src -lhotplugmonitor -lQtScriptd4 -lQtXmld4 -lQtGuid4 -lQtCored4
c:/mingw/bin/../lib/gcc/mingw32/4.4.0/../../../libmingw32.a(main.o):main.c:(.text+0x104): undefined reference to `WinMain@16'
Run Code Online (Sandbox Code Playgroud)

(object_script.libqlcengine.Debug是一个很长的.o文件列表)
现在,在构建它的时候,它试图链接一个静态.a库,所以我认为没有理由让MinGW寻找WinMain.我做了grep'WinMain'并且在整个源代码树上找不到任何结果.

如果要查看原始来源:

svn co https://qlc.svn.sourceforge.net/svnroot/qlc qlc
Run Code Online (Sandbox Code Playgroud)

或者我的分叉版本:

git clone git://git.code.sf.net/p/qlcplus/code qlcplus-code
Run Code Online (Sandbox Code Playgroud)

他们有相同的结果.
伙计们,我在这里失踪了什么?我尝试了一大堆C标志(-mwindows -lmingw32 -DQT_NEEDS_MAIN -lqtmain),但都没有.

有什么神奇的吗?

PS当然我可以在Linux上构建i386/amd64

解决了:

我只需要将以下行添加到创建库的.pro文件中:

win32:QMAKE_LFLAGS += -shared
Run Code Online (Sandbox Code Playgroud)

windows qt mingw winmain

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

Qt QImage显示错误的灰度图像

我想在Qt 5.12中将0到255之间的整数矩阵可视化为灰度图像。首先,我构建了一个示例256x256 uchar数组,每行的值在0到255之间。然后我尝试以QImage和format_grayscale作为格式显示图像。但是令人困惑的是,生成的图像在最后一行中包含受干扰的像素。

结果图像

我还创建了一个灰度彩色图,并尝试使用format_indexed8,但结果相同。这是我的代码。

uchar imageArray[256][256];
for (int i = 0; i < 256; i++)
{
    for (int j = 0; j < 256; j++)
    {
        imageArray[i][j] = uchar(j);
    }
}

QImage image(&imageArray[0][0],
                256,
                256,
                QImage::Format_Grayscale8);
Run Code Online (Sandbox Code Playgroud)

c++ qt grayscale qimage

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

GLSL聚光灯投影量

在我的开源项目中,我使用Qt3D设置了延迟渲染管道。到目前为止,一切都很好,但是现在我想通过增加聚光灯的投影体积来向前迈进。(例如,好像在现场冒烟)是这样的:

在此处输入图片说明

我正在使用的片段着色器在问题的结尾。我已经读过,对于每个片段,我都应该从光线位置进行光线行进,并找到与圆锥体的交点,但是我不知道如何将其转换为GLSL。我可以轻松地添加来自GBuffer的深度图(从摄影机的角度来看)的制服,但是我不知道这是否有帮助。

由于我的GLSL知识非常有限,请以实际代码答复,而不是冗长的数学解释,我无法理解/将其翻译为代码。请耐心等待我。

uniform sampler2D color;
uniform sampler2D position;
uniform sampler2D normal;
uniform vec2 winSize;

out vec4 fragColor;

const int MAX_LIGHTS = 102;
const int TYPE_POINT = 0;
const int TYPE_DIRECTIONAL = 1;
const int TYPE_SPOT = 2;

struct Light {
    int   type;
    vec3  position;
    vec3  color;
    float intensity;
    vec3  direction;
    float constantAttenuation;
    float linearAttenuation;
    float quadraticAttenuation;
    float cutOffAngle;
};

uniform Light lightsArray[MAX_LIGHTS];
uniform int lightsNumber;

void main()
{
    vec2 texCoord = gl_FragCoord.xy / winSize;
    vec4 col = …
Run Code Online (Sandbox Code Playgroud)

opengl lighting glsl light qt3d

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

标签 统计

qt ×2

c++ ×1

glsl ×1

grayscale ×1

light ×1

lighting ×1

mingw ×1

opengl ×1

qimage ×1

qt3d ×1

windows ×1

winmain ×1