2016-09-04 3 views
0

Я ищу использовать библиотеку нейронных сетей C++ «OpenNN». http://www.opennn.net/using openNN в визуальной студии (неразрешенный внешний символ)

Я относительно новичок в управлении проектами на С ++, и я считаю, что моя проблема вызвана этим.

Я клонировал openNN репо.

Я скопировал соответствующие папки из репо в папку, которую я создал, чтобы содержать весь проект OpenNN, который я планирую сделать.

Затем я создал консольное приложение C++ в visual studio, в этой папке, которую я использую для тестирования.

так реж структура:

OpenNN (где я планирую держать все проекты openNN)
--- eigen
--- opennn
--- tinyxml2
--- OpenNNTest (мой тестовая папка проекта)

Я провел некоторое тестирование с помощью классов Vector и Matrix, которые являются частью OpenNN и что все работает нормально.

Код ниже, однако возвращает следующие два внешних ошибок символов:

Error LNK2019 unresolved external symbol "public: __thiscall OpenNN::NeuralNetwork::NeuralNetwork(class OpenNN::Vector<unsigned int> const &)" ([email protected]@@[email protected][email protected]@[email protected]@Z) referenced in function "void __cdecl NNTest(void)" ([email protected]@YAXXZ) OpenNNTest D:\Projects\OpenNN\OpenNNTest\OpenNNTest\OpenNNTest.obj 1 

Error LNK2019 unresolved external symbol "public: virtual __thiscall 
OpenNN::NeuralNetwork::~NeuralNetwork(void)" ([email protected]@@[email protected]) referenced in function "void __cdecl NNTest(void)" ([email protected]@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

Вы должны изменить тип без знака для 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); 

Я надеюсь, что помогает.