小编zeb*_*und的帖子

奇怪的编译器错误:"对'main'的未定义引用"

有人能告诉我这意味着什么吗?

/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/../../../crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: ld returned 1 exit status
make: *** [program] Error 1
Run Code Online (Sandbox Code Playgroud)

我的make文件如下所示:

program : main.o render.o screenwriter.o
    g++ -o main.o render.o screenwriter.o -lSDL

main.o : main.cpp render.h screenwriter.h
    g++ -c main.cpp render.h screenwriter.h -lSDL

render.o : render.h render.cpp
    g++ -c render.h render.cpp -lSDL

screenwriter.o : screenwriter.h screenwriter.cpp
    g++ -c screenwriter.h screenwriter.cpp -lSDL

clean:
    rm program main.o render.o screenwriter.o -lSDL
Run Code Online (Sandbox Code Playgroud)

谢谢.

c++ undefined-reference

4
推荐指数
2
解决办法
9964
查看次数

Android JNI从Java类中获取Two Fields

在我发布任何代码或任何内容之前,让我解释一下我要完成的任务:我要做的是从资源文件夹中获取加载着色器,并将PongDroidShader对象数组传递给C++,以便它可以编译并加载它们.

在我的Java类中,我有一个函数,它遍历着色器文件夹中的每个着色器文件并解析它将它加载到一个String对象中,同时还通过其文件扩展名检查它是什么类型的着色器类型(.eg,一个顶点会有一个.vert扩展).一旦我完成了,我就把它发送到我的本机compileShaders函数,它接受PongDroidShader对象数组和数组的大小.

之后,我解析并链接JNI代码中的着色器.

到目前为止,我无法让JNI识别Java代码并将其加载到变量中.我到目前为止的内容如下:

Java代码

public final class PongDroidShader {
    public String mShaderSrc;
    public ShaderType mType;
}

private class ShaderHandler {


        ...

        private native void compileShaders(PongDroidShader[] shaders, int shaderCount);

        ...
Run Code Online (Sandbox Code Playgroud)

JNI/C++代码

JNIEXPORT void JNICALL Java_com_grepwise_pongdroid_PongDroid_00024ShaderHandler_compileShaders
  (JNIEnv * env, jobject obj, jobjectArray shaders, jint sizeOfShaders) {

    for( int i = 0; i < sizeOfShaders; ++i )
    {
        jclass clazz = env->FindClass( "com/grepwise/pongdroid/PongDroidShader" );
        jclass shaderTypeEnum = env->FindClass( "com/grepwise/pongdroid/ShaderType" );

        jfieldID field …
Run Code Online (Sandbox Code Playgroud)

c++ java android android-ndk

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

Eclipse CDT代码完成问题

出于某种原因,我运行的Eclipse CDT的代码完成(在Ubuntu linux中)无法正常工作.每当我包含一个库时,都不会弹出任何内容.有什么理由可以吗?

c++ eclipse intellisense eclipse-cdt code-completion

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

Joomla和MySQL

Joomla是否有关于通过PHP在PHP中进行数据库查询的特定文档?

我真正想要的是:

  • Joomla是否实现了自己的数据库包装器,如果没有,建议使用指定的配置参数创建一个.
  • Joomla是否具有参数化查询以防止SQL注入的能力.

php mysql joomla

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

链接器错误:未定义引用`vtable for square`.代码包括虚函数

我在这里检查了最常见的未定义的vtable问题引用,虽然这让我更好地理解了发生了什么,但我仍然无法收集足够的信息来弄清楚为什么我有这个错误.

我有一个简单的Square类,最初我试图从Polygon类继承.由于我对C++已经相对了解并且还在学习,所以我还没有尝试过多态性.

无论如何,在我试图摆脱基类(Polygon)后,我认为这可能会有所帮助.不幸的是,我仍然遇到同样的错误,我不知道发生了什么.我所知道的是,最初,Polygon该类需要一个至少包含构造函数定义的源文件,我给了它.这摆脱vtablePolygon班级的错误.

我的主要问题是我仍然在为Square类继承这个,它应该从Polygon类继承.我想知道的是我如何正确实现这一点以避免在vtable获得多态性的同时获得错误?

Polygon.h /的.cpp

#ifndef POLYGON_H
#define POLYGON_H

#include "Shape.h"
#include "vector3f.h"

class Polygon
{
public:
    Polygon();
    virtual void Collide(Shape &s) = 0;
    virtual void Collide(Polygon &p) = 0;
    virtual bool Intersects(const Shape &s) = 0;
    virtual bool Intersects(const Polygon &s) = 0;
protected:
    virtual void Draw() const = 0;
};

#endif // POLYGON_H

//------------------

#include "Polygon.h" …
Run Code Online (Sandbox Code Playgroud)

c++ linker-errors vtable undefined-reference

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

奇怪的编译器错误,声明我的迭代器未定义

我正在尝试创建一个模板函数,它将迭代映射的指定键/值对,并检查是否存在函数参数中指定的任何键.

实现如下:

template < class Key, class Value >
bool CheckMapForExistingEntry( const std::map< Key, Value >& map, const std::string& key )
{
    std::map< Key, Value >::iterator it = map.lower_bound( key );
    bool keyExists = ( it != map.end && !( map.key_comp() ( key, it->first ) ) );
    if ( keyExists )
    {
        return true;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

然而,无论出于何种原因,我似乎无法弄清楚为什么我的代码无法编译.我得到了这些错误:

error: expected ';' before 'it'
error: 'it' was not declared in this scope
Run Code Online (Sandbox Code Playgroud)

我之前碰到过这些,但这些通常都是由于我所犯的错误很容易发现.这可能会发生什么?

c++ scope compiler-errors expected-exception

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

使用Win32 API连接字符串

使用Win32连接字符串的最佳方法是什么?如果理解正确,可以使用正常的C方法strcat,但由于Win32现在处理Unicode字符串(又名LPWSTR),我想不出一种方法strcat可以使用它.

有这个功能,还是我应该自己编写?

c string winapi concatenation visual-c++

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

关于游戏引擎的SDL + Qt + OpenGL的一些想法

我一直在研究我正在构建的游戏引擎的理想部件.起初我尝试使用原始库(如Win32,X11,OpenGL,Glew,GLX等)从头开始编写所有内容.

然后我意识到这将永远只是一个游戏引擎.

所以,我正在研究使用OpenGL + SDL + Qt编写游戏引擎.我之所以要使用SDL,是因为它的上下文创建和OpenGL初始化支持.我喜欢Qt的实现(大部分),但老实说我更喜欢SDL.我的主要想法是使用Qt进行严格的GUI开发(例如游戏内菜单,调试控制台,HUD渲染等).

我想知道这是一个好方法,如果没有,他们有更好的方法吗?如果这是一个很好的方法,那么实现的最佳方式是什么,而不是引擎本身,而是两者的集成.我读了一个类似的问题,关于与正在编写物理模拟器的人打交道,实质上是试图完成同样的事情,但是他使用的是线程,我不确定我是否会使用或者不是很坦率地说.

尽管如此,据我所知,似乎游戏引擎和物理模拟器之间存在显着差异,我想知道我到底要做些什么.

一些想法

  • 我喜欢裸露的OpenGL实现,而不是Qt,主要是因为我觉得我有更多的控制权.

  • 我更喜欢对主循环有更多的控制,因此为什么我使用像SDL这样的东西而不是Qt的实现 - 问题是我不确定这是否真的建议考虑这两者有多么不同.

总而言之,我确信有些人会告诉我只需使用QWidget就可以了.问题是我对图形编程总体上比较新,并且觉得通过原始opengl学习原始API将是最好的方法.如果我错了,那么我肯定想知道.

我知道这个问题相当广泛而且不那么具体,但我真的需要这方面的建议,并希望这可能以某种方式帮助另一个想要做类似事情的开发人员.

在客观性方面,这似乎绝对是一个难以涵盖的主题,所以我将在灵活性和原始opengl + GUI支持方面说明标准,因为这正是我所需要的.

opengl graphics qt sdl game-engine

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

线性过滤可以用于MSAA纹理的FBO blit到非MSAA纹理吗?

我有两个2D纹理.第一个是MSAA纹理,使用的是目标GL_TEXTURE_2D_MULTISAMPLE.第二个非MSAA纹理使用目标GL_TEXTURE_2D.

根据OpenGL 关于ARB_texture_multisample规范,GL_NEAREST在绘制MSAA纹理时,只有一个有效的过滤选项.

在这种情况下,这两个纹理都GL_COLOR_ATTACHMENT0通过各自的Framebuffer对象附加.他们的分辨率也是相同的大小(根据我的知识,这对于将MSAA与非MSAA联系起来是必要的).

因此,考虑到当前的限制,如果我将MSAA保持FBO到非MSAA持有FBO,我仍然需要GL_NEAREST用作过滤选项,或者是否GL_LINEAR有效,因为两个纹理都已经被渲染到?

opengl textures framebuffer blit msaa

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

函数可以接受静态函数指针作为参数吗?

这是一个很好的例子:我正在尝试重载OpenGL,glutMouseFunc因此它可以接受我选择的命名空间和类功能.特别是Init::DisplayInit::mouse,这是静态的.问题是,这可能吗?如果是这样,这是如何实现的?

我的实施

void glutMouseFunc(void (Init::DisplayInit::*mouse)(int, int, int, int)) {
    (*mouse);
}
Run Code Online (Sandbox Code Playgroud)

实施中的错误

..\OpenGL_03\/displayinit.h:27: error: variable or field 'glutMouseFunc' declared void
..\OpenGL_03\/displayinit.h:27: error: expected primary-expression before 'int'
..\OpenGL_03\/displayinit.h:27: error: expected primary-expression before 'int'
..\OpenGL_03\/displayinit.h:27: error: expected primary-expression before 'int'
..\OpenGL_03\/displayinit.h:27: error: expected primary-expression before 'int'
..\OpenGL_03\/displayinit.h:27: error: void value not ignored as it ought to be
Run Code Online (Sandbox Code Playgroud)

注意,我把函数的声明放在同一个文件的头文件中.我还确保函数的声明定义都位于名称空间声明之外(它包含了大部分文件,每个文件).如图所示,第一个错误之一将函数读作变量或字段(???).

c++ glut function-pointers static-functions

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