我希望使用C ++神经网络库" OpenNN"。 http://www.opennn.net/
我对C ++项目管理比较陌生,我相信我的问题是由此造成的。
我克隆了openNN repo。
我将repo中的相关文件夹复制到我创建的文件夹中,以包含我计划制作的所有OpenNN项目。
然后我在visual studio中创建了一个c ++控制台应用程序,在我用于测试的文件夹中。
所以dir结构是:
OpenNN(我计划保留所有openNN项目)
--- eigen
--- opennn
--- tinyxml2
--- OpenNNTest
(我的测试项目文件夹)
我已经使用属于OpenNN的Vector和Matrix类进行了一些测试,并且一切正常。
以下代码会返回以下两个外部符号错误:
Error LNK2019 unresolved external symbol "public: __thiscall OpenNN::NeuralNetwork::NeuralNetwork(class OpenNN::Vector<unsigned int> const &)" (??0NeuralNetwork@OpenNN@@QAE@ABV?$Vector@I@1@@Z) referenced in function "void __cdecl NNTest(void)" (?NNTest@@YAXXZ) OpenNNTest D:\Projects\OpenNN\OpenNNTest\OpenNNTest\OpenNNTest.obj 1
Error LNK2019 unresolved external symbol "public: virtual __thiscall
OpenNN::NeuralNetwork::~NeuralNetwork(void)" (??1NeuralNetwork@OpenNN@@UAE@XZ) referenced in function "void __cdecl NNTest(void)" (?NNTest@@YAXXZ) OpenNNTest D:\Projects\OpenNN\OpenNNTest\OpenNNTest\OpenNNTest.obj 1
有趣的是,如果我改变:
OpenNN::NeuralNetwork nn(architecture);
到
OpenNN::NeuralNetwork nn();
没有问题,好像它找到了默认的构造函数而不是重载的构造函数?
我使用的代码如下:
#include "stdafx.h"
#include "../../opennn/opennn.h"
using namespace OpenNN;
using std::cout;
using std::endl;
void NNTest()
{
OpenNN::Vector<unsigned> architecture(5);
architecture[0] = 2;
architecture[1] = 2;
architecture[2] = 4;
architecture[3] = 3;
architecture[4] = 1;
OpenNN::NeuralNetwork nn(architecture);
//Vector<double> inputs(2);
//inputs[0] = 0.5;
//inputs[1] = 0.1;
//Vector<double> outputs = nn.calculate_outputs(inputs);
//cout << outputs << endl;
//nn.save("neural_network.xml");
}
int main()
{
NNTest();
getchar();
return 0;
}
答案 0 :(得分:0)
您需要将unsigned类型更改为size_t:
OpenNN::Vector<size_t> architecture(5);
architecture[0] = 2;
architecture[1] = 2;
architecture[2] = 4;
architecture[3] = 3;
architecture[4] = 1;
OpenNN::NeuralNetwork nn(architecture);
我希望有所帮助。