gpt4 book ai didi

没有 Xcode 的 macosx 上的 C++ SDL

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:22:15 25 4
gpt4 key购买 nike

系统:运行 Mac os X 10.5.5 (Leopard) 的黑色 Macbook

我想仅使用 g++ 编译 SDL hello-world 应用程序。 Xcode 适用于 macintosh,但我想要跨平台兼容性,所以我不会使用任何 coaca 框架(没有菜单、没有按钮等)。此外,将 Xcode 项目移植到其他操作系统并不是一件听起来很有趣的事情。我将 SDL 下载并安装到/Library/Frameworks 中。

最大的问题是:makefile 中包含什么(假设源代码中只有一个 helloWorld.cpp 文件)。我想避免修改找到的 Helloworld 文件 here如果可能的话。

最佳答案

我花了一点时间自己弄明白了这一点,只是我已经在使用 SDL 并且在 Lion 上从 C 过渡到 C++。这里的问题不仅仅是 makefile,它也可能是您的源文件...

下载SDL-版本.tar.gz

提取并在提示符下运行

./configure --prefix=/home/user/SDL && make && make install

假设一切都已实际构建,您现在可以使用 sdl-config 通过执行来构建您的源代码:

g++ Main.cpp -o Main `/home/user/SDL/sdl-config --cflags --libs` \
-framework OpenGL -framework Cocoa

相同
g++ Main.cpp -o Main -I/home/user/SDL/include \
-L/home/user/SDL/lib -lSDLmain -lSDL -framework OpenGL -framework Cocoa

现在这里的关键是您正在使用 C++... 为了让 SDL 宏正确替换您的 main,您需要防止 C++ 编译器破坏您的 main 函数调用。为此,请像下面这样声明您的主要内容:

extern "C" int main(int argc, char ** argv)
{
}

如果您不包含 extern "C" 内容,C++ 将更改您的主函数的名称,而 SDL 将无法自动找到它。如果您不使用 int main(int argc, char ** argv) 函数签名,C++ 将提示类型不匹配...因此您必须逐字执行。 (如果使用 GCC,则排除 extern "C" 部分)

陈子

关于没有 Xcode 的 macosx 上的 C++ SDL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4591076/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com