所以,我有以下问题可能看起来很奇怪或太初级。此代码段演示了我的问题。
#ifdef __cplusplus
#include <cstdlib>
#else
#include <stdlib.h>
#endif
#include "SDL2/SDL.h"
#include <iostream>
using namespace std;
int doSTH(void* data){
int* data2 = (int*)data;
cout << data2 << endl;
return 0;
}
int main(){
SDL_Init(SDL_INIT_EVERYTHING);
int* data = new int(2);
cout << data << endl;
SDL_CreateThread(doSTH, "sth", (void*)data);
SDL_Delay(1);
delete data;
SDL_Quit();
}
输出
0x2479f40
0x400c05
这意味着我以某种方式调用的函数没有得到我给它的指针,我错过了什么?
我正在使用Linux Ubuntu 14.04,g ++ 4.8和codeblocks。 请告诉我是否应该提供更多信息。 提前谢谢。
答案 0 :(得分:0)
没关系,不知何故,SDL2的构建被搞砸了。我刚刚卸载了libx11-dev,重新启动然后重新安装了libsdl2-dev,现在它可以正常工作。