arm-linux-gcc 오브젝트코드와 arm-linux-g++의 오브젝트 결함

hanseok의 이미지

arm-linux-gcc로 생성된 object파일이 있구요 ! (소스가 없습니다. )

물론 이것에 대한 header 파일도 있습니다.

제가 만든 소스 C 에서 사용
잘됩니다. (컴파일이 및 실행파일 생성까지==> 보드에서는 못해봤습니다.

다시 이것을 CPP에서 사용
안됩니다. (컴파일시 에러가 나타납니다. 링크에러 )==> 함수를 못찾는다고 나오네요..

arm-linux-g++ -c dete.c
arm-linux-g++ -o main dete.o lib.o (문제 object )
===함수 못찾는다는 링크 에러 쭈욱.. =======

====== 현제 작성되어 있는 코드가 class 를 사용한 cpp ====
보드에서 제공된 object는 C코드로 작성된듯 합니다.

이것을 해결할수 있는 방법이 있을까요..

dondek의 이미지

C로 작성된 헤더파일 내부에서 extern "C" { ... }이렇게 되어있는지 확인하시기 바랍니다.

#ifdef __cplusplus
extern "C" {
#endif

.....


#ifdef __cplusplus
}
#endif

진리를 나의 수준으로 끌어내리지 마라.
나를 진리의 수준으로 끌어올려라. - 배꼽 중에서

hanseok의 이미지

dondek wrote:
C로 작성된 헤더파일 내부에서 extern "C" { ... }이렇게 되어있는지 확인하시기 바랍니다.

음..
CPP는 제가 작성을 했습니다. (소스가 있는것이죠 )

C ==> 는 보드업체에서 제공을 했습니다. (소스 미제공)
라이브러리 lib.o, lib.h (제공)
lib.h 이것에는 함수의 프로토타입( ? ) 만 정의되어 있습니다.

제가작성한 CPP 에서 lib.h를 #include 하여서 사용하고
이곳의 함수를 main 에서 사용합니다.

g++ -c test.cpp 하면 object 파일이 나타납니다.
g++ lib.o test.o -o test <==
이곳에서 에러가 나타나고 있습니다.

이 에러를 해결하고 싶은것입니다.
보드를 주기 전에 이미 CPP 파일을 만들어 놓았고 이것을 C로 바꾸는것은 상당히 많은 작업을 해야 할듯합니다.

lib.o 에 있는것을 CPP로 바꾸고 싶은데 소스가 없네요
업체측에 소스및 CPP로 컴파일 한것을 요청은 했습니다.

잠이 들어야지만 꿈을 꿀수 있는것인가?
우리는 항상 꿈을 쫓아 가며 살아가는 사람들..

akbar의 이미지

hanseok wrote:
dondek wrote:
C로 작성된 헤더파일 내부에서 extern "C" { ... }이렇게 되어있는지 확인하시기 바랍니다.

음..
CPP는 제가 작성을 했습니다. (소스가 있는것이죠 )

C ==> 는 보드업체에서 제공을 했습니다. (소스 미제공)
라이브러리 lib.o, lib.h (제공)
lib.h 이것에는 함수의 프로토타입( ? ) 만 정의되어 있습니다.

제가작성한 CPP 에서 lib.h를 #include 하여서 사용하고
이곳의 함수를 main 에서 사용합니다.

그렇다면 CPP 파일에서 인쿨루드 할 때 인클루드 될 파일을 아래처럼
extern "C" {
#include "lib.h"
}

extern 블럭으로 감싸주세요
별도로 CPP 파일을 요청할 필요는 전혀 없습니다.

hanseok의 이미지

감사드립니다.
header 파일을 감쌀 생각은 안해봤습니다.

지금은 잘 되네요..

함수 사용하는 곳에서 extern으로 블럭지정만 했었네요.

잠이 들어야지만 꿈을 꿀수 있는것인가?
우리는 항상 꿈을 쫓아 가며 살아가는 사람들..

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.