- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我已在运行 High Sierra 的 Mac 上成功安装 CPLEX 12.8.0。我使用了 R 包 cplexAPI
,它实际上在幕后使用 C API 来解决线性规划问题,并且工作得很好。现在我想使用 C++ API;无论如何,我已经在使用 Rcpp 生成非常大的约束矩阵,所以在解决整个线性规划问题之前,我不想在 R 中使用中间对象。我告诉编译器(我使用来自 CRAN 的 clang4)CPLEX 和 Concert 的头文件和库在哪里(通过 PKG_CXXFLAGS=-I/<path to CPLEX>/include -I/<path to concert>/include
和 PKG_LIBS=-L/<path to CPLEX>/lib/x86-64_osx/static_pic -lcplex -lcplexdistmip -lilocplex -L/<path to concert>/lib/x86-64_osx/static_pic -lconcert
在 .R/Makevars 文件中),编译器成功找到了它们。我刚刚在 RStudio 中编译了一个包含 #include <ilcplex/ilocplex.h>
的 cpp 文件.然后我得到了这个错误:
/Applications/CPLEX_Studio128/concert/include/ilconcert/ilosys.h:391:10: fatal error: 'iostream.h' file not found
#include <iostream.h>
^~~~~~~~~~~~
1 error generated.
这显然不是我、R、RStudio 或 Rcpp 的错——这是 Concert 头文件的问题。然后我打开那个文件;它有很多 if 语句,并且有 #include <iostream>
,这有效。不知何故,它只是把我带到了#include <ilcplex/ilocplex.h>
.它也可能是 -DIL_STD
预处理指令。我读了 previous question那IL_STD
可能是为什么。但是,我不知道如何为 R 设置它,那么该怎么做呢? .R/Makevars 中有什么东西吗?好的,我对 C++ 了解不多。非常感谢。
> sessionInfo()
R version 3.4.3 (2017-11-30)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS High Sierra 10.13.2
Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] parallel stats graphics grDevices utils datasets methods base
other attached packages:
[1] viridis_0.5.0 viridisLite_0.3.0 rhdf5_2.22.0 RcppParallel_4.3.20
[5] profvis_0.3.4 microbenchmark_1.4-4 data.table_1.10.4-3 doParallel_1.0.11
[9] iterators_1.0.9 foreach_1.4.4 cplexAPI_1.3.3 Matrix_1.2-12
[13] Rcpp_0.12.15 RevoUtils_10.0.7
loaded via a namespace (and not attached):
[1] pillar_1.1.0 compiler_3.4.3 plyr_1.8.4 base64enc_0.1-3 tools_3.4.3
[6] zlibbioc_1.24.0 digest_0.6.15 jsonlite_1.5 evaluate_0.10.1 tibble_1.4.2
[11] gtable_0.2.0 lattice_0.20-35 rlang_0.1.6 yaml_2.1.16 gridExtra_2.3
[16] stringr_1.2.0 knitr_1.19 htmlwidgets_1.0 rprojroot_1.3-2 grid_3.4.3
[21] rmarkdown_1.8 ggplot2_2.2.1 magrittr_1.5 backports_1.1.2 scales_0.5.0
[26] codetools_0.2-15 htmltools_0.3.6 colorspace_1.3-2 stringi_1.1.6 lazyeval_0.2.1
[31] munsell_0.4.3
最佳答案
您可以在包含 ilcplex/ilocplex.h
之前在您的 Rcpp 代码中定义 IL_STD
。
或者,您可以在 PKG_CXXFLAGS
的定义中包含 -DIL_STD
。
关于c++ - 由于 CPLEX 中的 iostream.h 而出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48763366/
在 C++ 中包含头文件时,和...有什么区别 在 <> 标志中包含 .h 部分与不包括 .h 部分? #include 与 #include 将标题名称用双引号括起来还是用 符号括起来? #inc
最近我在阅读 Accelerated C++ 并从练习答案中发现了这个有趣的代码。这是完整的代码, #include "stdafx.h" #include "4_4.h" #include usi
我正在开发一个需要能够在标准 C++ 编译器和准标准编译器上编译的实用程序。代码可以而且将会被扔到几乎任何现有的 C++ 编译器上。 我正在寻找一种可靠且可移植地确定目标编译器是否支持带或不带 .h
如果有一个文件 foo.cpp,那么它通常有一个关联的头文件 foo.h,其中包含 foo.cpp 中定义的函数的所有声明。这样,所有其他使用 foo.cpp 中的函数的文件都可以只包含 foo.h
iostream 和 iostream.h 有什么区别? 最佳答案 iostream.h 已被提供它的编译器弃用,iostream 是 C++ 标准的一部分。 为了明确说明,当前 C++ 标准 (IN
我知道关于 之间的区别的问题和 之前有人问过。阅读这些答案后,我发现了以下差异 当然iostream.h已弃用,新的符合标准的编译器不支持它 iostream.h不包含 std 中的所有内容命名
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Difference between iostream and iostream.h 我的教授说了以下内容:
我需要构建一些我在办公室电脑上得到的旧代码,它有 gcc 4.4.5安装。我编辑了代码(删除 .h 或添加类似 的内容)以使它们保持最新,以便它们可以由 gcc 4.4.5 编译.但是,在看似成功编
我在学习C++的时候遇到了一个问题,在编译的时候遇到了错误。 详情如下: 最佳答案 您似乎没有在 MinGW 中安装 C++ 支持。如果您使用手动安装路径,请下载 gcc-c++ dev、dll 和
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: What is the difference between #include and #include
对于我当前的任务,我需要能够读/写(主要是基于文件的)比特流。虽然如果用标准 C/C++ 编码,这或多或少是一项微不足道的任务,但我喜欢通过重载和使用更通用的方法重写代码标准的 STL iostrea
这个问题在这里已经有了答案: Difference between iostream and iostream.h (3 个答案) 关闭 9 年前。 有什么区别 #include 和 #inclu
我正在尝试为 linux/MacOS 转换一个用 C++14 编写的应用程序。它使用 boost::filesystem,但不用于某些 iostream 操作。例如: boost::filesyste
示例: namespace boostio = boost::iostreams; boostio::stream memStream(arr); while (!memStream.eof())
我编写了以下简单的 C++ 程序: #include using namespace std; int main() { cout ^~~~~~~~~~ 1 error
我想在我的代码中将流公开为它们的标准等价物,以消除用户对 boost::iostreams 的依赖性.如果有必要,当然想有效地执行此操作而无需创建拷贝。我考虑过只设置 std::istream的缓冲区
#include in header files and #include only in cpp files 被认为是最佳实践。我正在尝试将大量 #include 从 header 移动到现有
#include #include #include #include using namespace std; int main() { int ival; while(ci
假设我得到一个 stringbuf,其中包含一些必须删除的特定字符序列的内容: std::stringbuf string_buff; std::iostream io_stream (&string
我有一个包含如下记录的文件 123 Tag 现在是所有好人都来帮忙的时候了 总是有一个数字和一些标签,后面跟着一系列单词。我想将数字提取为整数,将标记提取为字符串,将句子提取为字符串。我已经使用 ge
我是一名优秀的程序员,十分优秀!