有人能告诉我这意味着什么吗?
/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)
谢谢.
在我发布任何代码或任何内容之前,让我解释一下我要完成的任务:我要做的是从资源文件夹中获取加载着色器,并将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) 出于某种原因,我运行的Eclipse CDT的代码完成(在Ubuntu linux中)无法正常工作.每当我包含一个库时,都不会弹出任何内容.有什么理由可以吗?
Joomla是否有关于通过PHP在PHP中进行数据库查询的特定文档?
我真正想要的是:
我在这里检查了最常见的未定义的vtable
问题引用,虽然这让我更好地理解了发生了什么,但我仍然无法收集足够的信息来弄清楚为什么我有这个错误.
我有一个简单的Square类,最初我试图从Polygon类继承.由于我对C++已经相对了解并且还在学习,所以我还没有尝试过多态性.
无论如何,在我试图摆脱基类(Polygon
)后,我认为这可能会有所帮助.不幸的是,我仍然遇到同样的错误,我不知道发生了什么.我所知道的是,最初,Polygon
该类需要一个至少包含构造函数定义的源文件,我给了它.这摆脱vtable
了Polygon
班级的错误.
我的主要问题是我仍然在为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) 我正在尝试创建一个模板函数,它将迭代映射的指定键/值对,并检查是否存在函数参数中指定的任何键.
实现如下:
码
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)
我之前碰到过这些,但这些通常都是由于我所犯的错误很容易发现.这可能会发生什么?
使用Win32连接字符串的最佳方法是什么?如果理解正确,可以使用正常的C方法strcat
,但由于Win32现在处理Unicode字符串(又名LPWSTR
),我想不出一种方法strcat
可以使用它.
有这个功能,还是我应该自己编写?
我一直在研究我正在构建的游戏引擎的理想部件.起初我尝试使用原始库(如Win32,X11,OpenGL,Glew,GLX等)从头开始编写所有内容.
然后我意识到这将永远只是一个游戏引擎.
所以,我正在研究使用OpenGL + SDL + Qt编写游戏引擎.我之所以要使用SDL,是因为它的上下文创建和OpenGL初始化支持.我喜欢Qt的实现(大部分),但老实说我更喜欢SDL.我的主要想法是使用Qt进行严格的GUI开发(例如游戏内菜单,调试控制台,HUD渲染等).
我想知道这是一个好方法,如果没有,他们有更好的方法吗?如果这是一个很好的方法,那么实现的最佳方式是什么,而不是引擎本身,而是两者的集成.我读了一个类似的问题,关于与正在编写物理模拟器的人打交道,实质上是试图完成同样的事情,但是他使用的是线程,我不确定我是否会使用或者不是很坦率地说.
尽管如此,据我所知,似乎游戏引擎和物理模拟器之间存在显着差异,我想知道我到底要做些什么.
一些想法
我喜欢裸露的OpenGL实现,而不是Qt,主要是因为我觉得我有更多的控制权.
我更喜欢对主循环有更多的控制,因此为什么我使用像SDL这样的东西而不是Qt的实现 - 问题是我不确定这是否真的建议考虑这两者有多么不同.
总而言之,我确信有些人会告诉我只需使用QWidget就可以了.问题是我对图形编程总体上比较新,并且觉得通过原始opengl学习原始API将是最好的方法.如果我错了,那么我肯定想知道.
我知道这个问题相当广泛而且不那么具体,但我真的需要这方面的建议,并希望这可能以某种方式帮助另一个想要做类似事情的开发人员.
在客观性方面,这似乎绝对是一个难以涵盖的主题,所以我将在灵活性和原始opengl + GUI支持方面说明标准,因为这正是我所需要的.
我有两个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,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++ ×6
opengl ×2
android ×1
android-ndk ×1
blit ×1
c ×1
eclipse ×1
eclipse-cdt ×1
framebuffer ×1
game-engine ×1
glut ×1
graphics ×1
intellisense ×1
java ×1
joomla ×1
msaa ×1
mysql ×1
php ×1
qt ×1
scope ×1
sdl ×1
string ×1
textures ×1
visual-c++ ×1
vtable ×1
winapi ×1