C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[60443] Re:Re:Re:완료 감사합니다
더블리스 [shootime] 1173 읽음    2010-03-13 16:07
아 알고보니 ..이미 class TControlsMotor extren 를 하고있는데
text 폼에서 한번 더해서 나오는 에러 더군요 지우고 보니 에러없네요



더블리스 님이 쓰신 글 :
: 장성호님 감사합니다 쓰신 답변 잘읽었구요
: 남의 소스를 보고 처음 쓰는 툴로 적응 하기가 참 힘드네요 ㅡ,.ㅡ;
: 그래서 요렇게 바꿧습니다 ^^.
: /* test.h */
: #include "TControlsMotor.h" 
: classTFormTest : public TForm
: {
: TControlsMotor ControlsMotor;  <----바뀐부분.
: __published:
: 	//버튼등등등
: 	//생략
: 	void __fastcall Panel6Click(TObject *Sender);
: private :
: public:	
: __fastcall Test(TComponent* Owner); 
: }
: 
: extern PACKAGE TFormTest *FormTest;
: 
: /* test.cpp */
: 
: 
: #include "test.h"
: TFormTest *FormTest; 
: 
: __fastcall TFormTest::TFormTest(TComponent* Owner)
:     : TForm(Owner)
: {
: 
: }
: void __fastcall TFormTest::Panel6Click(TObject *Sender)
: {
: ControlsMotor.AxisHomming(2); <---- 바뀐 부분
: }
: 

: 요렇게 바꿨습니다
: Build
:   [Linker Warning] Public symbol '_ClsRobot' defined in both module C:\MTH\CLASS_ROBOTS.OBJ and C:\MTH\FORM_INROBOTSET.OBJ
: 이런 에러가 뜨네요
: 모듈을 읽어 드리는게 겹치게 된다는 애기인가요 ?
:
:
:
: 장성호 님이 쓰신 글 :
: : 더블리스 님이 쓰신 글 :
: : : 안녕하십니까
: : : 이제 갓 프로그래머로서의 때를 입히고 있는 사람입니다.
: : : 빌더는 이번에 회사에 입사하면서 보게 된것이 처음이구요.
: : : 프로그램의 기초는 c,c++,c#의 소스의 기본정도만 잡혀있는 상태입니다.^^
: : : 그나마 가장 많이 본게 C#이구요.
: : : 다름이 아니라 현재 회사 내에서 프로젝트로 진행중인 소스 중에 추가할려고 하는데
: : : c#과 달라서 적용을 못하고 있는데요.c#에선 되는 방식이 빌더에서는 안되니 참 답답하네요.
: : : 회사내에서도 지금 빌더를 고정적으로  한사람이 없다보니 배울수도 없는 입장이고
: : : 물어볼 사람은 타회사 사람인데 답변을 쉽게 안해주니 물어보기도 힘드네요 -_-;
: : : 사설이 너무 긴듯 ..
: : :
: : : /* global.h */
: : : #define	SSC_API	__stdcall
: : : #define	GLOBAL	extern
: : : extern "C" {                 //흠 이건 머지 ;
: : : GLOBAL	int SSC_API sscHomeReturnStart(int device, int channel, int axnum); <----------1.함수도 아니고 이 부분의 의미가 무언인가요..
: : : }
: : 
: : 위 모듈은 dll인가 봐요?
: : 프로그램은 exe 하나로만 돌아가는것이 아니라 외부library를 쓰는경우가 많은데..
: : 다른 dll 이나 exe 등에서 위 sscHomeReturnStart 함수를 쉽게 찾아 쓸수 있도록  외부에 export하도록 선언하는 부분입니다.
: : 
: : 
: : :                                            
: : : /* TControlsMotor.h */
: : : #include "global.h"
: : : 
: : : class TControlsMotor
: : : {
: : : public:
: : :     __fastcall TControlsMotor();
: : :     virtual __fastcall ~TControlsMotor();
: : :     bool __fastcall AxisHomming(int nAxis);
: : : 
: : : private:   
: : :     int m_nUID;
: : :     short m_nBoardID;
: : :     int m_nDevice;
: : :     int m_nChannel;
: : : }
: : : 
: : : /* TControlsMotor.cpp */
: : : 
: : : #include "TControlsMotor.h"
: : : 
: : : __fastcall TControlsMotor::TControlsMotor() // 생성자
: : : {
: : :     m_nBoardID = 0;
: : :     m_nChannel = 1;
: : :     m_nDevice = 0;
: : : }
: : : __fastcall TControlsMotor::~TControlsMotor() //소멸자
: : : {
: : : }
: : : 
: : : bool __fastcall TControlsMotor::AxisHomming(int nAxis)
: : : {
: : :     bool bRet = false;
: : : 
: : :     if(sscHomeReturnStart(m_nDevice, m_nChannel, nAxis) == 0) bRet = true;
: : :     return bRet;
: : : }
: : : 
: : : .
: : : /* test.h */
: : : #include "TControlsMotor.h" -->>제가 추가한 부분
: : : 
: : : classTFormTest : public TForm
: : : {
: : : __published:
: : : 	//버튼등등등
: : : 	//생략
: : : 	void __fastcall Panel6Click(TObject *Sender);
: : : private :
: : : public:	
: : : __fastcall Test(TComponent* Owner); <-----2.생성자 맞나요?
: : 
: :     >> 생성자 맞습니다.
: :         C#과 마찬가지로 C++에서도 생성자는 class명도 똑같습니다.
: : 
: : : }
: : : 
: : : extern PACKAGE TFormTest *FormTest;
: : : 
: : : /* test.cpp */
: : : TClsRobots * ClsRobot;-->>제가 추가한 부분
: : : 
: : : #include "test.h"
: : : TFormTest *FormTest; <------3.객체 생성? 선언? 보기에는 생성 같습니다만;
: :    >> 그냥  TFormTest * 라는 포인터변수 global로 하나 선언 한 것입니다.
: :        생성은 다른데서 해주거나 해줘야 합니다.
: : 
: : 
: : : 
: : : __fastcall TFormTest::TFormTest(TComponent* Owner)
: : :     : TForm(Owner)
: : : {
: : : 
: : : }
: : : void __fastcall TFormTest::Panel6Click(TObject *Sender)
: : : {
: : :  //4.이 부분에 TControlsMotor::AxisHomming(int nAxis) 요놈을 불러서 쓰고있습니다.
: :    >>> 위와같이 쓰면 안됩니다. TControlsMotor의 객체를 생성해야 합니다.
: : 
: : : ClsRobot->AxisHomming(1); -->>제가 추가한부분.
: :    >>이부분에서  TControlsMotor 라는 객체를 생성하는 부분이 안보니에ㅛ
: : 
: : : 
: : : }
: : : 

: : : 이러한 소스가 있고 폼 test 라는곳에서 파란색 부분을 정의하고 선언한다음
: : : 사용하니깐 링크되고 사용이 다되는데.문제는 test 라는 폼에서 실행을 하고  버튼 클릭후. 변수값들을 보니
: : : 제가 던진 숫자 1을 받아서 실행 하던데 m_nDevice, m_nChannel 요 변수들이 초기화가 안되어있고 쓰레기 값이 들어가있더군요.
: : : 고참에게 물어보니 생성이 아니라 /* TControlsMotor.cpp */ 를 참조 하는 방식으로 생성하게끔 바꾸라는데.
: : : C#에서는 이해 하겠는데 빌더로 변환을 못하겠네요 .. 도움 부탁드립니다.
: : :
: : : 소스가 부족하여 이해 가 안되시거나 제가 잘못 잘라 온부분이 있다면 리플해주시면 연결된곳을 올려드리겠습니다
: :
: :
: :
: :
: : 그럼...

+ -

관련 글 리스트
60439 A 클래스(폼)에서 참조 하여 B라는 클래스에서 실행하기 더블리스 1137 2010/03/13
60440     Re:A 클래스(폼)에서 참조 하여 B라는 클래스에서 실행하기 장성호 1444 2010/03/13
60442         Re:Re:A 클래스(폼)에서 참조 하여 B라는 클래스에서 실행하기 더블리스 1360 2010/03/13
60443             Re:Re:Re:완료 감사합니다 더블리스 1173 2010/03/13
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.