2016-04-28 14 views
1

私はNLoptライブラリ(http://ab-initio.mit.edu/wiki/index.php/NLopt)へのリンクRcppパッケージをビルドするといくつかの助けが必要と思います。Rcpp(NLopt)

私は、Windows上だとRStudioの「&リロードを構築する」を使用。

Iましパッケージの\ srcフォルダに次のファイル:SRC \

    • Makevars.in
    • Makevars.win
    • RcppExports.cpp
    • nlopt
    • の.h nlopt.hpp
    • libnlopt.lib
    • libnlopt.def
    • libnlopt.dll
    • libnlopt.a私はNLOptの.libファイル(MinGWのを使用して構築された)とdllファイルをコピーした

Rがそれ自身をコンパイルすることを希望する\ srcフォルダ。それは、しかし、と私はライブラリにリンクしようMakevarsファイルを、追加しましたその理由のために、ケースではないようです。にインストール

RStudioから実行しているとき、私は、私が思う、NLOPライブラリに(参照:「未定義参照」)をリンクに問題があると言われます、次のエラーメッセージが表示されますライブラリ 'C:/Users/g49128/Documents/R/win-library/3.2'

インストールソースパッケージ 'NewPackage' ... ** libsの

グラム++ -m64 -shared -s - 静電気のlibgcc -o NewPackage.dll tmp.def RcppExports .o Rcpp_project_test.o -Lc:/Temp/R/Rcpp/NewPackage/src/libnlopt.a -Lc:/アプリケーション/ extsoft/libに/ x64の-Lc:/アプリケーション/ extsoft/libに-LC:/ PROGRA〜1/R/R-32〜1.2/binに/ x64の-lR Rcpp_project_test.o:。Rcpp_project_test.cpp :(テキスト+ 0x73c): `__imp_nlopt_createに未定義の参照"

だから私はそのIヘイブン容疑者彼らにはあまりよく習熟していない、「Makevars」は正しいものを手に入れました。

いくつかのCRANパッケージをコンサルティングから、特にnloptrに、両方のMakevarsファイルの内容に私の現在の最良の推測では、次のとおりです。

NLOPT_HOME = C:/温度/ R/Rcpp/NewPackage/srcに。

KG_CFLAGS = -I "$(NLOPT_HOME)"

PKG_LIBS = -L "$(NLOPT_HOME)/libnlopt.a" 'libnlopt.a' のライブラリと環境です

変数 'NLOPT_HOME'はライブラリへのパスを保持します。

私がここで何が欠けているのか教えてもらえますか?どんな助けでも大歓迎です、ありがとうございます。

+0

私はMakevarsで '-l'と' -L'を反転したと思います( '-L'はlibファイル用です) – purplepsycho

+0

-lと-Lを反転してくれてありがとうlibのパスの前に-lと-Lのどちらも持たないものとして)トリックをしているようには見えません。この場合、コンパイラは-lc:/Temp/R/Rcpp/NewPackage/src/libnlopt.aを見つけることができないと不平を言う。 –

答えて

3

nloptrパッケージ自体がそれを確実に行います。これは、次のMakevars.winを使用しています:ザ・あなたが正しいNLOPT_HOME変数が設定されている必要があり

# Copyright (C) 2010 Jelmer Ypma. All Rights Reserved. 
# This code is published under the L-GPL. 
# 
# File: Makevars.win 
# Author: Jelmer Ypma 
# Date: 18 August 2010 
# 
# 09 June 2011: Windows support added thanks to Stefan Theussl and Uwe Ligges. 
#    NLOPT_HOME is the directory where a working installation of 
#    NLopt is located (within subdirectories NLOPT_VERSION/R_ARCH) 
# 18 November 2011: Removed NLOPT_VERSION macro and adopted some other changes 
#     proposed by Brian Ripley to make nloptr work with his new toolchain. 
#     NLopt should now be located in NLOPT_HOME/R_ARCH (i.e. without 
#     version number) 
# 19 February 2013: NLopt is compiled with --with-cxx option, in order to include 
#     the StoGo algorithm. This means that we now need to link to 
#     with -lnlopt_cxx and also link to the c++ library, -lstdc++. 
# 7 November 2013: Changed PKG_CPPFLAGS to PKG_CFLAGS. 
# 2 May 2014: Added quotes around include paths to allow for spaces in NLOPT_HOME. 

# C Compiler options 
PKG_CFLAGS = -I"$(NLOPT_HOME)$(R_ARCH)/include" 
PKG_LIBS = -L"$(NLOPT_HOME)$(R_ARCH)/lib" -lnlopt_cxx 

CRANサポートサイトから対応するあらかじめ構築されたライブラリをダウンロードすることがありますが、ここには表示されません。

+0

ありがとうDirk。私はこれまでに試した以下のMakevars.winファイルを使って動作させました。それがなぜ突然動くのか分かりませんが、それは素晴らしいことです。 PKG_CFLAGS = -l "$(NLOPT_HOME)" PKG_LIBS = -L "$(NLOPT_HOME)" -lnlopt –

関連する問題