的Qt 4.6.1:=對比=錯誤:未定義參照QMAIN(INT,焦炭**)
在下面的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 Normal setting of a variable - values within it are recursively expanded when the variable is used, not when it's declared
VARIABLE := value Setting of a variable with simple expansion of the values inside - values within it are expanded at declaration time.
我想了解這裏發生了什麼,而w帽子是解決方案。
的.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
@cHao我已經發布了我擁有的唯一源代碼。我沒有專門寫qMain在任何地方。如果你的意思是別的,請澄清。 –
我在看到提示,鏈接器找不到主要功能。這意味着它根本不存在,名稱錯誤,或者不在正在編譯的任何文件中。您的主要功能在哪裏以及如何定義? ñ如果你沒有一個,這個東西應該如何工作? – cHao