从 Visual Studio 2012 项目创建".o"文件
Creating a ".o" file from a Visual Studio 2012 project
我在Visual Studio 2012中为类编写了一个程序,我想在Linux机器上运行它。我试过在Linux机器上编译,但我相信我使用的一些库不兼容跨平台。我是否可以创建一个在Linux上运行的.o文件,而不需要更改代码?
语言:C++以下是我使用的库:
#include <iostream>
#include <queue>
#include <map>
#include <climits>
#include <iterator>
#include <algorithm>
#include <fstream>
#include <string>
#include <iomanip>
当我尝试在Linux 中编译时会发生什么
Main.cpp: In function ‘int main()’:
Main.cpp:110:24: error: no matching function for call to 'std::basic_ifstream<char>::basic_ifstream(std::string&)’
Main.cpp:110:24: note: candidates are:
/usr/include/c++/4.6/fstream:460:7: note: std::basic_ifstream<_CharT, _Traits>::basic_ifstream(const char*, std::ios_base::openmode) [with _CharT = char, _Traits = std::char_traits<char>, std::ios_base::openmode = std::_Ios_Openmode]
/usr/include/c++/4.6/fstream:460:7: note: no known conversion for argument 1 from ‘std::string {aka std::basic_string<char>}’ to ‘const char*’
/usr/include/c++/4.6/fstream:446:7: note: std::basic_ifstream<_CharT, _Traits>::basic_ifstream() [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.6/fstream:446:7: note: candidate expects 0 arguments, 1 provided
/usr/include/c++/4.6/fstream:420:11: note: std::basic_ifstream<char>::basic_ifstream(const std::basic_ifstream<char>&)
/usr/include/c++/4.6/fstream:420:11: note: no known conversion for argument 1 from ‘std::string {aka std::basic_string<char>}’ to ‘const std::basic_ifstream<char>&’
您列出的头文件似乎都不是Visual Studio或Windows特有的,所以假设您在Linux机器上安装了正确的C++标准库,它应该只是编译。
如果你真的想交叉编译,那么你必须将gcc
的源代码、C++标准库头和二进制文件下载到你的Windows机器上。然后构建用于交叉编译的编译器(这可能意味着安装"windows到Unix兼容版本的gcc",如Cygnus cygwin或gcc-MingW)。要实现这一点并不是一件简单的事。相信我,除非迫不得已,否则你不想这么做。
如果你出于某种原因不想在linux机器上编译,一个更好的解决方案是在你的Windows机器上安装一个虚拟机,并在上面安装linux,然后使用该linux虚拟机作为你的编译系统。
编辑:
需要澄清的是,根据问题中的编辑:问题似乎是C++11功能的使用,这可能是Visual Studio中的默认功能,其中gcc/g++将采取更保守的方法。解决方案是告诉编译器在构建的命令行上使用带有-std=c++11
的C++11标准。这应该允许使用字符串中的名称打开文件的扩展名正常工作。
老实说,你最好用对跨平台更友好的东西来构建它,尤其是考虑到它是C++,没有理由依赖visual studio。试着看看代码::块之类的东西来构建它,使其在linux上运行。
我认为即使你找到了方法,也不会奏效。您需要在Linux机器中单独生成.o
- 终端不会为C++文件创建.exe文件吗
- 如何从具有两列的.txt文件创建并行数组?
- 从 .lib 文件创建一个.dll文件
- 如何从输入文件 c++ 创建随机名称生成器
- 无法从 cso 文件创建顶点着色器(从 fx 文件创建)
- 如何为多个目录中的多个文件创建生成文件?
- 在编译时从 c++ 文件创建枚举
- 如何在运行时从 c++ 中的 DLL 文件创建对象?
- 文件创建并不总是成功
- 如何使用 QFile、c++ 从文件创建整数数组
- 您可以使用 makefile 从 .o 对象文件创建 C++ 文件吗?
- 从函数中的dat文件创建一个2维数组
- 如何为 cpp 和 h 文件创建别名(并忽略编译器__attributes__)
- 如何从现有的生成文件创建 CMake 文件?
- 为什么我无法使用文本文件创建文件映射?
- 通过读取文件创建映射<字符串,矢量>时如何管理内存<string>
- 从文本文件创建 2D 字符串矢量
- ofStream: - 尽管文件创建了,但文本文件上没有输出
- 从语言文件创建JSON对象
- 将文本文件创建到节点.js的插件C++