Я делаю пакет R, который использует функцию Rcpp::RcppArmadillo::sample()
в некоторых исходных файлах. В частности, я использую эту функцию в 4 разных файлах cpp, и в каждом из них я добавляю эту строку #include <RcppArmadilloExtensions/sample.h>
, чтобы включить требуемый файл заголовка.
Все работает нормально до тех пор, пока я не захочу собрать пакет командой R CMD build mypackage
. Я получаю ошибку повторяющийся символ, когда большинство функций, определенных в упомянутом заголовочном файле, перечислены как повторяющиеся символы. Например, такие функции, как ProbSampleNoReplace
, FixProb
, SampleReplace
и WalkerProbSampleReplace
, перечислены как дублирующиеся между этими 4 файлами cpp.
Я погуглил эту проблему, и решение состоит в том, чтобы определить переменные или функции в файле .cpp
вместо файла .h
, чтобы предотвратить дублирование, и использовать extern
, если вы хотите использовать эти переменные в любых других файлах cpp
. Но я думаю, что это решение здесь не применимо, так как заголовочный файл написан не мной, и я не хочу вносить какие-либо изменения в заголовочный файл sample.h
, расположенный здесь.
Любое предложение, как решить эту проблему? Спасибо заранее за вашу помощь.
#include
изsample()
файла. - person Dirk Eddelbuettel   schedule 21.05.2017#include
, которые можно добавить в начало каждого файла cpp. В любом случае, ты как всегда спас меня. Спасибо большое Дирк! - person Amir Nik   schedule 23.05.2017