본문 바로가기

분류 전체보기691

동적 라이브러리 만들고 사용하기 환경: GCC 4.1.2 20080704 (Red Hat 4.1.2-46) on CentOS 5.4 프로그램이 실행 중에, 필요한 기능이 구현되어 있는 파일을 찾아서 그 기능을 사용할 수 있도록 하는, 일반적으로 말하는 plug-in 형식을 구현하기 위해서 동적 라이브러리(주로 .so 나 .dll 파일)를 이용한다. Windows의 DLL과 같은 개념인데, C++의 경우 MFC라면 확장 DLL을 이용하여 class 를 다룰 수 있지만 linux의 경우 일반적으로는 class 를 다루지 못하는 것으로 보인다. 대신, 돌아 가서, 라이브러리에서 class로 구현된 객체를 생성/파괴하는 함수를 만들고 C 로 extern 한 이후 사용하면 된다. (이 글을 읽기 위해서는 C++의 상속/가상함수, 함수 포인터 정.. 2010. 5. 25.
디버깅 공지사항 이 곳에 작성되는 글들 중 '디버깅' 카테고리에 들어 가 있는 글들은, 디버깅을 하는 과정을 보여주기 위함이다. 즉, 이런 에러는 이렇게 처리하면 된다 가 아니라, 이런 에러는 이와 같은 생각의 과정을 거쳐서 이렇게 처리할 수 있었다 라는 것 보여주기 위함이다. 모든 에러에 대해 동일한 에러의 원인을 보여 주는 것은 불가능하다. 대신, 어떻게 에러를 해결해 나가는가를 살펴 보는 것은 충분히 확장/변용되어 다른 상황에도 적용될 수 있다고 생각한다. 2010. 5. 25.
no matching function for call to 다음과 같은 에러가 났다. 환경: GCC 4.1.2 20080704 (Red Hat 4.1.2-46) on CentOS 5.4 NR_stat.cpp: In function ‘void ttest(const std::vector&, const std::vector&, double&, double&)’: NR_stat.cpp:516: error: no matching function for call to ‘Beta::betai(double, double, double)’ NR_stat.cpp:240: note: candidates are: bool Beta::betai(double, double, double, double*) 에러의 내용을 살펴 보면, NR_stat.cpp 파일에 있는 함수 void ttes.. 2010. 5. 24.
미분방정식에 대한 수치해석학적 해(Runge-Kutta) - 구현 참고: 소스 코드는 이 글에 있는 것을 그냥 이용하면 됩니다. 만약 아래의 코드를 보았음에도 불구하고 어떻게 이용해야 하는지 모른다면 아직 C++ 에 익숙하지 않다는 것을 의미합니다. 이 경우 저에게 코드를 요청하셔도 별로 의미가 없습니다. 왜냐 하면, 이 경우 제가 소스를 드려도 제대로 이해하기 어려울 것이기 때문입니다. 그리고 제가 보내는 소스가 이 글에 나와 있는 것과 별반 다르지 않기 때문이기도 합니다. 이전 글에서 보았던 미분방정식에 대한 해를 수치해석학적으로 구하는 Runge-Kutta of Order Four 알고리즘을 구현해 보자. 단, 약간 일반화시켜서 구현한다. 알고리즘은 Richard L. Burden; J. Douglas Faires, Numerical Analysis, 8th ed.. 2010. 5. 23.