相关疑难解决方法(0)

如何获得程序路径

可能重复:
如何在C中查找可执行文件的位置

我正在使用GTK +在C++中编写一个多平台应用程序,我遇到了问题.我必须得到程序路径.例如,当节目在/home/user/program(或C:\Users\user\program.exe)时,我有/home/user/(或C:\Users\user\).

可以以及如何做到这一点?

c++ gtk

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

如何处理C++库中的资源

我正在为OpenGL构建一个非常轻量级的库/包装器,我遇到了一个小问题.假设我有一个看起来像这样的目录结构:

GraphicsProject
|GraphicsApp
||main.cpp
|GraphicsLib
||include
|||fileA.h
|||fileB.h
||library
|||fileA.cpp
|||fileB.cpp
||shaders
|||shader1.txt
|||shader2.txt
|| build
||| bunch of build stuff
Run Code Online (Sandbox Code Playgroud)

在运行时获取shader1.txt路径的最佳方法是什么?或者,不管是谁在使用这个项目或者它在用户机器上的位置,都要使路径不会改变?

我考虑过的一些选项:1)获取当前的工作目录并使用该路径直到我需要的位置.我对此解决方案的主要关注是,我不确定当前目录将根据用户构建项目的方式或其他因素而无法控制.它也感觉不是很优雅.2)将着色器的源代码存储为char数组/字符串,位于include目录中的.h文件中.这似乎是一个更好的解决方案,除了它会使着色器编写稍微麻烦.

有这样做的标准方法吗?我正在使用CMake构建项目,如果这改变了什么.

cmake organization include-path

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

如何在 C++ 中获取当前文件路径?

我想获取当前文件路径,就像在a.cpp中一样,我可以得到

\n\n

/home/workspace/src/a.cpp

\n\n

我怎样才能得到这个\xe3\x80\x80路径?

\n

c++

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

从 SDL 检测可执行文件夹

我正在创建一个 C++ SDL 游戏引擎,知道可执行路径是相关的,因为图像和其他资源没有存储在可执行文件中 - 它们位于单独的文件夹(“res/”)中。

在 Linux 下,我使用了一个 shell 脚本“rungame.sh”,它 cd 到可执行路径,然后运行可执行文件(然后使用“./”来引用可执行文件夹)。但是,我相信这是一种“丑陋”的方法,我希望它与 Windows 兼容。

此外,当前的方法不是很好,因为它可能会改变某些命令行参数的含义。

我想要一个跨平台(* NIX、Windows 和 Mac OS X,如果可能)解决方案来获取可执行文件的当前路径。游戏路径/可执行文件名称可能会更改。

解决我的问题的最简洁方法是什么(最好使用 std::string 和尽可能少的平台相关 API)?

c++ directory sdl cross-platform path

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

在Windows上的C中获取当前工作目录

出于某些奇怪的原因,当我尝试将函数get_current_dir_name与MinGW GCC编译器一起使用时,我在链接上得到了这个结果:

undefined reference to `get_current_dir_name'
collect2.exe: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

但是,我只在使用这样的函数时得到这个

printf("%i", get_current_dir_name());
Run Code Online (Sandbox Code Playgroud)

或这个

printf("%s", get_current_dir_name());
Run Code Online (Sandbox Code Playgroud)

当我尝试做的时候

printf(get_current_dir_name());
Run Code Online (Sandbox Code Playgroud)

我得到了这个,这没有任何意义,因为该函数返回一个char*,根据文档:

tester.c: In function 'main':
tester.c:16:2: warning: passing argument 1 of 'printf' makes pointer from integer without a cast [enabled by default]
  printf(get_current_dir_name());
  ^
In file included from tester.c:1:0:
c:\mingw\include\stdio.h:294:37: note: expected 'const char *' but argument is of type 'int'
 _CRTIMP int __cdecl __MINGW_NOTHROW printf (const char*, ...);
Run Code Online (Sandbox Code Playgroud)

Google似乎真的不喜欢谈论C,因为我可以找到如何在几乎任何现有语言上获得workdir,除了C.唯一弹出的是一些描述3个函数的文档:getcwd,getwd和get_current_dir_name.我真的想使用get_current_dir_name,因为它的清洁度.

我该如何处理?这是minGW的错误吗?或者我错过了什么?

c windows gcc mingw ld

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

标签 统计

c++ ×3

c ×1

cmake ×1

cross-platform ×1

directory ×1

gcc ×1

gtk ×1

include-path ×1

ld ×1

mingw ×1

organization ×1

path ×1

sdl ×1

windows ×1