在Unix上从Windows开发c++,原生函数调用
Developing C++ on Unix from Windows, native function-calling?
我想问几个关于在Unix(而不是windows)上编写c++的具体问题。
-
在windows中,要调用本机操作系统函数,通常链接到.dll或包含windows.h同样,如何在Unix中引用底层操作系统函数?
-
是否有Unix中所有底层操作系统功能的参考指南?(以便查看可用的功能)
-
"包含"boost库的最佳方法是什么?使用像eclipse C/c++版本这样的IDE,并像在windows上那样包含boost ?
谢谢
1)没有单独的头文件。您不直接调用系统调用,相反,它们通常通过标准c库(如fopen)间接调用(在fopen的情况下,您也可以调用底层函数open,但这会使程序的可移植性降低)。提及您具体引用的系统调用将会有所帮助
2)听起来你是Unix平台开发的新手。我强烈推荐Richard Stevens的《UNIX环境中的高级编程》。
3)你应该熟悉make工具。一些通常被您的IDE隐藏在窗口中的东西。此外,boost库还附带了示例程序。
在Unix系统上,Unix函数通常与C标准库一起放在libc中。编译器会自动将它链接到你的可执行文件,通常作为一个"共享库",有点像Windows的DLL,但也不完全是。
至于标题要包含…大多数Unix系统都带有命令行man
命令,该命令允许您调出关于各种调用的手册页。这些手册页通常会提到使用特定函数所需的头文件。
有一些作为系统调用实现的特殊函数。对于一般的C程序员来说,特定函数是系统调用这一事实是一个实现细节。但是通常值得注意的是这些函数是什么,因为它们可以帮助您了解操作系统为您做了什么,以及您正在使用的库正在做什么。这种区别在Windows上很难确定。
大多数Unix程序员仍然使用make
和命令行实用程序。这意味着没有IDE设置或任何东西。你必须弄清楚要向编译器传递哪些标志。这通常不是那么困难。
而且,大多数Unix系统不会随意地在整个文件系统上安装软件。如果它是一个包含文件,是安装包的一部分,它将位于/usr/include目录中。这意味着您不必神奇地确定Boost包含文件的位置。它们将与其他所有内容一起放在/usr/include中。
虽然您可能必须弄清楚您需要哪些Boost库(如-lboost_filesystem
),但所有Boost库都将在/usr/lib
或/usr/lib64
中与所有其他库一起使用,因此您不必弄清楚它们在哪里。
-
没有一个头文件可以用来访问所有的*nix函数;请参阅第2节、第3节或第3节中相应的手册页,了解相关函数,以便了解您需要哪些头文件和库。
-
每个*nix倾向于不同程度地遵循POSIX或SUS。
-
…怎么啦?
- 函数调用中参数的顺序重要吗
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 变量没有改变?通过向量的函数调用
- 在两个类中共享相同的函数调用,并在不需要时避免空实例化
- 是否有C++编译器选项允许激进地删除所有函数调用,并将参数传递给具有空体的函数
- 我知道函数调用中存在歧义.有没有办法调用foo()函数
- 模板函数调用
- 获取从C++中同一类中的构造函数调用的方法返回的值
- 析构函数调用
- 成员函数调用和C++对象模型
- 使用共享指针的函数调用,其对象应为 const
- C++:编译时检查匹配的函数调用对?
- 函数调用C++中的参数太少
- 来自 DLL 的函数调用 [表观调用的括号前面的表达式必须具有(指向-)函数类型]
- 返回指向对象的指针的函数调用是否为 prvalue?
- C++ 如何重载 [] 运算符并进行函数调用
- 代码的效率. 转到和函数调用
- 如何从反应原生代码调用 C 函数?
- 如何调查随机安卓原生函数调用错误?
- 在Unix上从Windows开发c++,原生函数调用