[질문] 라이브러리가 g++로 컴파일 된경우 이를 *.c 파일에서 컴파일 하여 사용하기 위한 방법이 있는지요. 라이브러리의 헤더 파일도 g++에 적합하도록 된거 같은데.
한가지 더 질문드립니다. Makefile에서 -DLINUX의 의미가 무엇인가요?
C에서 C++를 사용하려면 C 형태로 감싸주어야 합니다.
class C { public: void foo() {} };
/* c_foo.h */ extern "C" { void c_foo(); } /* c_foo.c */ #include "C.h" void c_foo() { C c; c.foo(); }
#include "c_foo.h" int main() { c_foo(); }
이게 정석인지는 모르겠지만 경험상 가능한 방법입니다.
Makefile에서 -DLINUX의 의미가 무엇인가요?
#include "c_foo.h" int main() { c_foo(); } 이제 마지막으로 C코드에서 아까 감싼 함수를 사용하고 gcc로 컴파일합니다. 이게 정석인지는 모르겠지만 경험상 가능한 방법입니다.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
C에서 C++를 사용하려면 C 형태로 감싸주어야 합니다.[code:1
C에서 C++를 사용하려면 C 형태로 감싸주어야 합니다.
C++ 라이브러리/오브젝트가 위와 같은 형태라고 가정하면
위와 같은 방식으로 C++ 코드를 C 코드로 감싸줍니다.
그리고 g++로 컴파일합니다.
이제 마지막으로 C코드에서 아까 감싼 함수를 사용하고 gcc로 컴파일합니다.
이게 정석인지는 모르겠지만 경험상 가능한 방법입니다.
Re: [질문] 라이브러리가 g++로 된 경우
C++ 함수가 C linkage로 지정되지 않았다면 불가능합니다.
참고하세요.
http://www.research.att.com/~bs/bs_faq2.html#callCpp
소스에서
#define LINUX
라고 써준 것과 동일한 효과입니다.
[quote="kane"][code:1]#include "c_f
C++과 C 코드를 함께 쓸 때는 main()을 반드시 C++ 코드에 넣어야 합니다.
그렇지 않으면 non-local static object(global, namespace, class의 static
멤버)의 초기화를 보장할 수 없습니다.
댓글 달기