在visual studio中使用openNN(未解析的外部符号)

时间:2016-09-04 17:45:20

标签: c++ visual-studio

我希望使用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;
}

1 个答案:

答案 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);

我希望有所帮助。