2012-09-08 7 views
0

저는 이동 중에도 새로운 음악적 하모니를 생성 할 수있는 전문가 시스템을 구축하는 장기 프로젝트가 있습니다. 나는 VB.net에서 프로젝트를 시작했지만 플랫폼 독립적 인 언어를 사용하여 향후 마이그레이션을 용이하게하기 위해 C++로 방향을 전환했다. 본질적으로 색조는 벡터로 그룹화 될 때 벡터로 그룹화 될 때 화음 진행의 일부를 형성하는 원자입니다. 따라서 전체 구조는 재귀적인 느낌을 갖습니다. 다음 코드는 Netbeans 7.2에서 컴파일 및 링크되지만, 정렬하기 어려운 끔찍한 메모리 문제가 있으므로 지금 Eclipse를 사용하고 있습니다. 동적 라이브러리는 Eclipse에서 컴파일되지만 객체가 생성되지 않도록 총체적인 수준에서 문제를 연결하는 것처럼 보입니다. 저는 모든 종류의 치료법을 문자 그대로 며칠 동안 보냈습니다. 여기에 최상위 주 코드와 내가받는 오류 메시지의 일부 목록이 포함됩니다. 무슨 일이 일어날 지에 대한 어떤 조언도 감사 할 것입니다. 기대에 들으 ..링커가 사용자 정의 형식을 만들지 않습니다.

/* 
* File: main.cpp 
* Author: Creative 
* 
* Created on August 6, 2012, 10:49 AM 
*/ 

#include "../tonestatdynlib/name_pitchstructure.h" 
#include "../sequencerdynlib/chord.h" 
#include "../sequencerdynlib/Move.h" 
#include "../sequencerdynlib/block.h" 
#include "../sequencerdynlib/prog.h" 
#include "../legalitydynlib/testLegal.h" 
#include "../dataWriterdynlib/dWriter.h" 
#include <iostream> 
#include <sqlite3.h>//database facility 

int main(int argc, char** argv) { 

    int make; 
    char start; 

    cout << "Do you want to start a new movement? Y/N" << endl; 

cin >> start; 

    if (start == 'Y') { 
     bool end = false; 
     Move theMove; 
     block theBlock; 
     prog theProg; 
     int i = 1, mv = 1, bk = 1, pr = 1; 

     theMove.items.push_back(theBlock); 
     theBlock.items.push_back(theProg); 

     do { 
      chord nextChord(i); 
      nextChord.getPitches(); 
      theProg.items.push_back(nextChord); 
      dWriter dW(nextChord, pr, bk, mv, "SONO"); 
      cout << "Chord Number " << i << " is completed. Do you want to:" << endl; 
      cout << "Enter another chord?: 1" << endl; 
      cout << "Start a new progression?: 2" << endl; 
      cout << "Start a new block?: 3" << endl; 
      cout << "Start a new movement?: 4" << endl; 
      cout << "Exit SONO: 5" << endl; 
      cin >> make; 
      switch (make) { 
       case 5: end = true; 
        break; 
       case 1: i++; 
        break; 
       case 2: i = 1; 
        pr++; 
        break; 
       case 3: i = 1; 
        pr = 1; 
        bk++; 
        break; 
       case 4: i = 1; 
        pr = 1; 
        bk = 1; 
        mv++; 
        break; 
      } 
     } while (end == false); 
    } 
    return 0; 
} 

오류 메시지 :

g++ -L"/Users/Creative/Documents/workspace/tonestatdynlib/Debug" -L"/Users/Creative/Documents/workspace/chordOpsdynlib/Debug" -L"/Users/Creative/Documents/workspace/dataWriterdynlib/Debug" -L"/Users/Creative/Documents/workspace/legalitydynlib/Debug" -L"/Users/Creative/Documents/workspace/sequencerdynlib/Debug" -L"/Users/Creative/Documents/workspace/tonestatdynlib" -L"/Users/Creative/Documents/workspace/sequencerdynlib" -L"/Users/Creative/Documents/workspace/legalitydynlib" -L"/Users/Creative/Documents/workspace/dataWriterdynlib" -L"/Users/Creative/Documents/workspace/chordOpsdynlib" -o "SONO" ./main.o 



Undefined symbols for architecture x86_64: 
    "block::block(block const&)", referenced from: 
     __gnu_cxx::new_allocator<block>::construct(block*, block const&)in main.o 
     void std::_Construct<block, block>(block*, block const&)in main.o 
     std::vector<block, std::allocator<block> >::_M_insert_aux(__gnu_cxx::__normal_iterator<block*, std::vector<block, std::allocator<block> > >, block const&)in main.o 
    "prog::prog(prog const&)", referenced from: 
     void std::_Construct<prog, prog>(prog*, prog const&)in main.o 
     __gnu_cxx::new_allocator<prog>::construct(prog*, prog const&)in main.o 
     std::vector<prog, std::allocator<prog> >::_M_insert_aux(__gnu_cxx::__normal_iterator<prog*, std::vector<prog, std::allocator<prog> > >, prog const&)in main.o 
    "chord::chord(chord const&)", referenced from: 
     void std::_Construct<chord, chord>(chord*, chord const&)in main.o 
     __gnu_cxx::new_allocator<chord>::construct(chord*, chord const&)in main.o 
     std::vector<chord, std::allocator<chord> >::_M_insert_aux(__gnu_cxx::__normal_iterator<chord*, std::vector<chord, std::allocator<chord> > >, chord const&)in main.o 
    "pitchStats::pitchStats(pitchStats const&)", referenced from: 
     void std::_Construct<pitchStats, pitchStats>(pitchStats*, pitchStats const&)in main.o 
    "block::~block()", referenced from: 
     _main in main.o 
     std::vector<block, std::allocator<block> >::_M_insert_aux(__gnu_cxx::__normal_iterator<block*, std::vector<block, std::allocator<block> > >, block const&)in main.o 
    "prog::~prog()", referenced from: 
     _main in main.o 
     std::vector<prog, std::allocator<prog> >::_M_insert_aux(__gnu_cxx::__normal_iterator<prog*, std::vector<prog, std::allocator<prog> > >, prog const&)in main.o 
    "chord::~chord()", referenced from: 
     _main in main.o 
     std::vector<chord, std::allocator<chord> >::_M_insert_aux(__gnu_cxx::__normal_iterator<chord*, std::vector<chord, std::allocator<chord> > >, chord const&)in main.o 
    "Move::Move()", referenced from: 
     _main in main.o 
    "block::block()", referenced from: 
     _main in main.o 
    "prog::prog()", referenced from: 
     _main in main.o 
    "chord::chord(int)", referenced from: 
     _main in main.o 
    "chord::getPitches()", referenced from: 
     _main in main.o 
    "dWriter::dWriter(chord const&, int, int, int, char const*)", referenced from: 
     _main in main.o 
    "dWriter::~dWriter()", referenced from: 
     _main in main.o 
    "Move::~Move()", referenced from: 
     _main in main.o 
ld: symbol(s) not found for architecture x86_64 
collect2: ld returned 1 exit status 
make: *** [SONO] Error 1 

답변

2

당신은 라이브러리에 링크를 검색 할 수있는 경로를 제공하고 있습니다. -l을 사용하여 라이브러리를 제공해야합니다. 예를 들어 libFoo.so의 경우 -lFoo을 사용합니다.

+2

중요 사항 : 라이브러리는 _after_ 오브젝트 파일에 배치해야합니다. –

+0

고마워요 4 YR 답장 juanchopanza 그 문제를 정렬! – Kam

+0

@Kam 좋습니다! 문제가 해결되면 눈금 모양의 아이콘을 클릭하여 대답을 수락 할 수 있습니다. – juanchopanza

관련 문제