【发布时间】:2012-10-21 16:44:09
【问题描述】:
Qt 4.6.1
在下面的.pro文件中,当我使用语句时
sources = ef.cpp
我收到以下错误:
RInside.h: No such file or directory
然后当我用 := 替换 = 时:
sources := ef.cpp
上面的错误消失了,我得到一个新的错误:
error: undefined reference to qMain(int, char**)
从这里:https://stackoverflow.com/a/448939/462608
VARIABLE = value 变量的正常设置 - 其中的值是 在使用变量时递归展开,而不是在声明时展开
VARIABLE := value 通过简单扩展设置变量 内部的值 - 其中的值在声明时展开。
我想了解这里发生了什么,以及解决方案是什么。
.cpp
#include <RInside.h>
int main(int argc, char *argv[])
{
RInside R(argc, argv);
R["txt"] = "Hello, world!\n";
R.parseEvalQ ("cat(txt)");
exit(0);
}
.pro
TEMPLATE = app
TARGET =
DEPENDPATH += .
INCLUDEPATH += .
R_HOME := 'c:/R-2.15.1'
# Input
sources = ef.cpp
programs := $(sources:.cpp=)
## include headers and libraries for R
RCPPFLAGS := $(shell $(R_HOME)/bin/R $(R_ARCH) CMD config --cppflags)
RLDFLAGS := $(shell $(R_HOME)/bin/R $(R_ARCH) CMD config --ldflags)
RBLAS := $(shell $(R_HOME)/bin/R $(R_ARCH) CMD config BLAS_LIBS)
RLAPACK := $(shell $(R_HOME)/bin/R $(R_ARCH) CMD config LAPACK_LIBS)
## include headers and libraries for Rcpp interface classes
RCPPINCL := $(shell echo 'Rcpp:::CxxFlags()' | $(R_HOME)/bin/R $(R_ARCH) --vanilla
--slave)
RCPPLIBS := $(shell echo 'Rcpp:::LdFlags()' | $(R_HOME)/bin/R $(R_ARCH) --vanilla --slave)
## include headers and libraries for RInside embedding classes
RINSIDEINCL := $(shell echo 'RInside:::CxxFlags()' | $(R_HOME)/bin/R $(R_ARCH) --vanilla --slave)
RINSIDELIBS := $(shell echo 'RInside:::LdFlags()' | $(R_HOME)/bin/R $(R_ARCH) --vanilla --slave)
## compiler etc settings used in default make rules
CXX := $(shell $(R_HOME)/bin/R $(R_ARCH) CMD config CXX)
CPPFLAGS := -Wall $(shell $(R_HOME)/bin/R $(R_ARCH) CMD config CPPFLAGS)
#CXXFLAGS := $(RCPPFLAGS) $(RCPPINCL) $(RINSIDEINCL) $(shell $(R_HOME)/bin/R $(R_ARCH)
CMD config CXXFLAGS)
QMAKE_CXXFLAGS := $(RCPPFLAGS) $(RCPPINCL) $(RINSIDEINCL) $(shell $(R_HOME)/bin/R $(R_ARCH) CMD config CXXFLAGS)
LDFLAGS = -s
QMAKE_LIBS := $(RLDFLAGS) $(RBLAS) $(RLAPACK) $(RINSIDELIBS) $(RCPPLIBS)
CC := $(shell $(R_HOME)/bin/R $(R_ARCH) CMD config CXX)
【问题讨论】:
-
看起来您已经做出的更改让您进入了链接阶段。你有
qMain(int, char**)吗?它真的在编译吗? -
@cHao 我已经发布了我拥有的唯一源代码。我没有在任何地方专门写过 qMain。如果你的意思是别的,请澄清。
-
我所看到的提示我链接器找不到主要功能。这意味着它要么根本不存在,要么名称错误,要么不在任何正在编译的文件中。您的主要功能在哪里以及如何定义? n 如果你没有,这东西应该如何工作?
-
@cHao
If you don't have one, how is this stuff supposed to work?你可能误会我的意思了。我有main函数,但我没有qMain函数。当我将:=替换为=时,错误有所不同。见 OP。