私は C++ を初めて使用し、最近言語を紹介するクラスを受講したので、構文の基本は理解していますが、外部ライブラリを使用してコードに接続する方法については説明がありませんでした。
私は線形プログラムを解くためにCLP COINライブラリを使用しようとしています... http://www.coin-or.org/Clp/userguide/clpuserguide.html#id4766717
私がそこで読んだことから、ソースをダウンロードするのではなく、プリコンパイルされたバイナリ ライブラリを使用することを提案しました。Windows 7 プラットフォームを使用しているためです。
私は単に Hello World と同等のものを動作させようとしています。テスト用に提供されたサンプルコードは次のとおりです...
* Copyright (C) 2004, International Business Machines Corporation
and others. All Rights Reserved.
This sample program is designed to illustrate programming
techniques using CoinLP, has not been thoroughly tested
and comes without any warranty whatsoever.
You may copy, modify and distribute this sample program without
any restrictions whatsoever and without any payment to anyone.
*/
/* This shows how to provide a simple picture of a matrix.
The default matrix will print Hello World
*/
#include "ClpSimplex.hpp"
int main (int argc, const char *argv[])
{
ClpSimplex model;
int status;
// Keep names
if (argc<2) {
status=model.readMps("hello.mps",true);
} else {
status=model.readMps(argv[1],true);
}
if (status)
exit(10);
int numberColumns = model.numberColumns();
int numberRows = model.numberRows();
if (numberColumns>80||numberRows>80) {
printf("model too large\n");
exit(11);
}
printf("This prints x wherever a non-zero elemnt exists in matrix\n\n\n");
char x[81];
int iRow;
// get row copy
CoinPackedMatrix rowCopy = *model.matrix();
rowCopy.reverseOrdering();
const int * column = rowCopy.getIndices();
const int * rowLength = rowCopy.getVectorLengths();
const CoinBigIndex * rowStart = rowCopy.getVectorStarts();
x[numberColumns]='\0';
for (iRow=0;iRow<numberRows;iRow++) {
memset(x,' ',numberColumns);
for (int k=rowStart[iRow];k<rowStart[iRow]+rowLength[iRow];k++) {
int iColumn = column[k];
x[iColumn]='x';
}
printf("%s\n",x);
}
printf("\n\n");
return 0;
}
Visual Studio でインクルード ディレクトリと Lib ディレクトリをプロジェクトに関連付けましたが、ビルドしようとすると、次のような多くのリンカー エラーが発生します。
Simplex(void)" (??1ClpSimplex@@QAE@XZ) referenced in function _main
1>hello.obj : error LNK2019: unresolved external symbol "public: virtual __thiscall CoinPackedMatrix::~CoinPackedMatrix(void)" (??1CoinPackedMatrix@@UAE@XZ) referenced in function _main
1>hello.obj : error LNK2019: unresolved external symbol "public: void __thiscall CoinPackedMatrix::reverseOrdering(void)" (?reverseOrdering@CoinPackedMatrix@@QAEXXZ) referenced in function _main
1>hello.obj : error LNK2019: unresolved external symbol "public: __thiscall CoinPackedMatrix::CoinPackedMatrix(class CoinPackedMatrix const &)" (??0CoinPackedMatrix@@QAE@ABV0@@Z) referenced in function _main
1>hello.obj : error LNK2019: unresolved external symbol "public: int __thiscall ClpSimplex::readMps(char const *,bool,bool)" (?readMps@ClpSimplex@@QAEHPBD_N1@Z) referenced in function _main
1>hello.obj : error LNK2019: unresolved external symbol "public: __thiscall ClpSimplex::ClpSimplex(bool)" (??0ClpSimplex@@QAE@_N@Z) referenced in function _main
私のコースはリンカの問題ではなく、コード構文に関連するデバッグのみを扱っているため、初心者として、この問題を解決する方法についてはわかりません。
ヒントや他のスレッドへのリンクは非常に役立ちます。私は一日中グーグルをしていましたが、途方に暮れています...