在Windows 7 64bit中,我使用MinGW-w64(来自MinGW-build项目,由NiXman提供).具体来说,我正在使用x64-4.8.0-release-win32-sjlj-rev2.7z.x64 =开发机器.Win32 =线程模型.这可以编译32位和64位目标.
当我编译并清空cpp文件时只有一个简单的cp main和一个printf行说你好...我是否将它编译为32位或64位之间存在不一致.
g++ -m32 test.cpp依赖关系是:
g++ -m64 test.cpp依赖关系只是:
在64位模式下编译时,我不明白LIBGCC_S_SJLJ-1与LIBSTDC++-6依赖项有什么关系.64位C++编译不需要这两件事吗?或者它们是否自动静态链接?
如果他们自动链接到一个而不是另一个,这是什么原因?
我知道我可以用and LIBGCC和LIBSTDC++静态链接32位项目.虽然我不确定这是不是很好的做法. -static-libgcc-static-libstdc++
我尝试过-shared-libgcc,-shared-libstdc++以便我的64位编译具有动态依赖性LIBGCC,LIBSTDC++但是当使用–m64标志(编译为64位)时,g ++拒绝动态链接它们.
我已经读过静态链接LIBGCC,这LIBSTDC++是一件坏事,并且它会阻止人们安全地链接到其他第三方动态库中,因为某些东西(我并不真正理解这个说法).
如果有人能够阐明g ++行为的这种差异以及这方面的最佳实践,我将非常感激.
我正在尝试创建一个无边框窗口,可能在全屏幕中重叠任务栏(不使用ChangeDisplaySettings(&settings, CDS_FULLSCREEN);),我无法弄清楚如何做到这一点.我已经尝试了几乎所有可能的CreateWindowEx风格组合而没有成功.
它的目的是使用opengl/directx在窗口无边框应用程序中呈现,同时允许在后台继续渲染时进行alt-tabbing.这是由许多游戏完成的,例如wow和dota2(windowed fullscreen选项)以及诸如windows7任务管理器之类的应用程序(在vm 中用两个截图来证明这个想法)(windows8没有这种行为).
任务经理没有关注:

任务经理重点:

这是我用来轻松测试我的一些想法的一些最小代码,但没有一个真正完成它.它只创建一个大小为screenwidth-20和screenheight-20的无边框窗口.
#include <windows.h>
static bool quit = false;
static LRESULT CALLBACK message_handler(HWND hwnd, UINT umsg, WPARAM wparam, LPARAM lparam)
{
switch(umsg)
{
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_CLOSE:
quit = true;
break;
}
return DefWindowProc(hwnd, umsg, wparam, lparam);
}
int main()
{
WNDCLASSEX wc;
HMODULE hInstance;
HWND hwnd;
MSG msg;
ZeroMemory(&msg, sizeof(MSG));
hInstance = GetModuleHandle(NULL);
wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;
wc.lpfnWndProc = message_handler;
wc.cbClsExtra = …Run Code Online (Sandbox Code Playgroud) 我NSMutableAttributedString在iOS6中使用在UILabel子类中应用字距调整和阴影.正确应用属性,但是阴影在第一个字符的左边缘和下行部分的底部进行裁剪(例如小写的p).标签本身已clipsToBounds禁用.
代码...
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:[self text]];
NSRange range = NSMakeRange(0, [attributedString length]);
NSNumber *kern = [NSNumber numberWithFloat:0.75f];
[attributedString addAttribute:NSKernAttributeName value:kern range:range];
NSShadow *shadow = [[NSShadow alloc] init];
[shadow setShadowBlurRadius:3.0f];
[shadow setShadowColor:[UIColor darkGrayColor]];
[shadow setShadowOffset:CGSizeMake(0, 2.0f)];
[attributedString addAttribute:NSShadowAttributeName value:shadow range:range];
[self setAttributedText:attributedString];
Run Code Online (Sandbox Code Playgroud)
它几乎没有引人注意,但一旦你看到它,它是显而易见的.有其他人遇到过这个bug并且有解决方法吗?
我正在寻找在游戏中有用的人工智能算法的C和C++实现.我最感兴趣的一些是强化学习算法,遗传算法和神经网络.然而,任何其他人都很有趣.
我发现dlib.net它有一些非常迷人的机器学习算法,但这些似乎并不特别适合游戏.
我可以使用的许可证是Boost软件许可证,Zlib/Libpng许可证和公共域.任何属于这些许可证的图书馆的任何建议都将受到高度赞赏.
c++ algorithm artificial-intelligence machine-learning game-ai
我正在尝试开始使用emscripten,但我似乎无法找到有关它的所有信息.我已经按照教程,得到了一个简单的hello world工作.从我收集的内容中,正常的GL调用会被自动转换为WebGL,但我想知道的是如何设置渲染目标,上下文以及所有那些没有SDL或GLUT沿着这些行的任何东西.
有没有办法WebGL在emscripten 上使用SDL\GLUT(包括鼠标/键盘输入等)?我在哪里可以获得有关emscripten的更多信息,示例等?
我想获得gcc的ld来自编译一堆对象文件放在一起时共享库忽略未解决的参考-fpic标志.
到目前为止,我尝试了很多选项(为了简洁起见,用一些小文件代替了许多目标文件的长文件名):
ld --allow-shlib-undefined --unresolved-symbols=ignore-all -shared 1.o 2.o -o lib0.so
ld -G 1.o 2.o -o lib0.so
Run Code Online (Sandbox Code Playgroud)
(我的某处是红色的,-G可以提供未解决的引用,但是没有运气.)
虽然gcc(带-Wl,--unresolved-symbols=ignore-all)运行它会导致更少的未解析引用,因为它默认链接
-lstdc++ -lmingw32 -lgcc_s -lgcc -lmoldname -lmingwex -lmsvcrt -lpthread -ladvapi32 -lshell32 -luser32 -lkernel32 -liconv -lmingw32 -lgcc_s -lgcc -lmoldname -lmingwex -lmsvcrt
Run Code Online (Sandbox Code Playgroud)
但它仍然抱怨没有-lopengl32和-lgdi32.
编译lib没有-fpic,将所有目标文件存储在.awith ar和静态链接中,同时具有exe程序链接-lopengl32并-lgdi32导致完全正常工作.
实际的错误消息(为简洁起见,替换了长文件和函数名称):
[file].o: In function `[function]': [file].cpp:19: undefined reference to `memcpy'
[file].o: In function …Run Code Online (Sandbox Code Playgroud) 我试图将(静态)luajit嵌入到c ++应用程序中失败了.我已经按照luajit网站上的步骤无效,用Google搜索主题并没有获得相关信息,并尝试了我能想到的每件事.
好像我正在运行的问题似乎是g ++没有正确地链接它,或者也许luajit没有正确构建.
这是我正在尝试编译的内容:
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>
int main(void)
{
lua_State *L = luaL_newstate();
luaL_openlibs(L);
lua_close(L);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我得到的undefined reference错误是一个错误,几乎就像我根本没有链接luajit.
main.cpp:7: undefined reference to `luaL_newstate()'
main.cpp:9: undefined reference to `luaL_openlibs(lua_State*)'
main.cpp:10: undefined reference to `lua_close(lua_State*)'
Run Code Online (Sandbox Code Playgroud)
在设置链接选项后,我正在尝试用eclipse cdt(mingw)编译它,如下所示:
Library Paths: D:/includes/LuaJIT-2.0.1/src
Includes (GNU G++): D:/includes/LuaJIT-2.0.1/src
Libraries: luajit
Run Code Online (Sandbox Code Playgroud)
而eclipse cdt似乎正在尝试编译它如下:
g++ -ID:/includes/LuaJIT-2.0.1/src -O0 -g3 -pedantic-errors -Wall -Wextra -Werror -Wconversion -c -fmessage-length=0 -Weffc++ -std=c++11 -o "source\\main.o" "..\\source\\main.cpp"
g++ -LD:/includes/LuaJIT-2.0.1/src -o test.exe "source\\main.o" -lluajit
Run Code Online (Sandbox Code Playgroud)
我从他们的下载页面下载了 …
我有一个包含日期yyyy/mm/dd格式的字符串变量.如何time_t在C++中将其转换为类型?例如:string date_details = "2012/09/12"
另外,如何比较包含日期的两个变量来决定哪个是C++中最早的?例如:string curr_date = "2012/09/13" string user_date = "2012/09/12"
谢谢.