現在VirtualBox上のUbuntuでlibcmaesを用いたC++のプログラムを作成しています.
ubuntu上で動作するまでは至ったのですが,わけあってWindows上で動かすことになりました.
そこでクロスコンパイルのためにmingw-w64を入れてみたのですがリンクエラーが出てしまいます.
問題なくコンパイルするためにはどうすればいいのかご教授お願い致します.
g++では問題なくコンパイルできますが,コマンドをx86_64-w64-mingw32-g++に置き換えると以下のようなエラーが出ます.
$ sudo x86_64-w64-mingw32-g++ -fopenmp -I/usr/include/eigen3 -I/usr/include/libcmaes -L/usr/lib -std=c++11 -o output.exe source.cpp -lcmaes /usr/bin/x86_64-w64-mingw32-ld: /tmp/cc67KYiT.o:finish.cpp:(.text+0x146): undefined reference to `libcmaes::CMAParameters<libcmaes::GenoPheno<libcmaes::NoBoundStrategy, libcmaes::NoScalingStrategy> >::CMAParameters(std::vector<double, std::allocator<double> > const&, double const&, int const&, unsigned long long const&, libcmaes::GenoPheno<libcmaes::NoBoundStrategy, libcmaes::NoScalingStrategy> const&)' /usr/bin/x86_64-w64-mingw32-ld: /tmp/cc67KYiT.o:finish.cpp:(.text+0x166): undefined reference to `libcmaes::CMAParameters<libcmaes::GenoPheno<libcmaes::NoBoundStrategy, libcmaes::NoScalingStrategy> >::~CMAParameters()' collect2: error: ld returned 1 exit status
以下にソースコードを記載します.
実際に取り組んでいるものとは違いますが,libcmaesのサンプルコードを簡略化したものでも同様のエラーでしたのでそちらを記載します.
#include <iostream> #include <cmaes.h> using namespace libcmaes; int main() { int dim = 10; // problem dimensions. std::vector<double> x0(dim,20.0); double sigma = 0.1; CMAParameters <> cmaparams(x0,sigma); return 0; }
追記:
実行時のコマンドでmingw内のincludeやlibを指定できていなかったので修正しました.
ですが,結果に変化はありませんでした.
$ sudo x86_64-w64-mingw32-g++ -fopenmp -I/usr/x86_64-w64-mingw32/include/eigen3 -I/usr/x86_64-w64-mingw32/include/libcmaes -L/usr/x86_64-w64-mingw32/lib -static-libstdc++ -static-libgcc -std=c++11 -o output.exe source.cpp -lcmaes
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/23 08:39