(제가 다른데 썼던걸 고대로 옮깁니다)
지금 작업중인 서버를 어느정도 짜고..클라이언트에 붙여봤는데..
참 그전에 이런일이 있었죠..
3D엔진은 VC++로 작업, 클라이언트에 붙는 네트웍 인터페이스는 BCB로 작업
LIB나 DLL로 하려니 뭔가 변환을 해야하는지-_-기술이 부족 =_=
(화이트페이지에 방법을 알지만-_-복잡하고 귀찮다는거 아실껍니다)
그래서 소스로 껴서 함께 컴파일을 하려는데..
다음과 같은 문제로 불가능
첫번째.. for(int i ...) / for(int i ...) 를
VC++은 for(int i ... ) / for( ... )
이런식으로 해야했고 -_- (이건 알고 있던건데-_-왜이런 실수를 했는지;;)
두번째.. (void *)pPack = vpCasting; // 기억이 안나지만 이런식.
좌측 캐스팅은 VC++에서 안먹더군요 -_-
즉.. pPack = (char *)vpCasting; 으로 해야 했습니다.
(char *)문제가 아니라-_- 저 (char *)보다 훨씬 긴 구조체 였기 때문이죠..
(코딩을 짧게 짜기 위한-_-)
세번째.. std::bad_alloc 또는 xalloc
VC++은 저게 없더군요-_-덕분에 <iostream> 아예 날리고.. if(pDest) 로 검사
(ANSI C++을 지키지 않았다는 소리-_-)
-_-조금 귀찮았지만 어떻게 어떻게 고쳐서 컴파일이 되었고.
서버를 붙여봤습니다. (서버는 BCB로 제작)
그런데 치명적인 문제 발생-_-
-_-VC++에 비트필드/pack기능이 약하더군요
#pragma pack(1)
struct {
int i:1;
}
#pragma pack()
VC++은 저 구조체가 4바이트, BCB는 1바이트......
100개가 넘는-_-패킷 구조체를 몽땅 뜯어고쳐야 했습니다 ;
근데 귀찮아서-_-서버를 그냥 VC++로 컴파일 -_-;
(세번째 bad_alloc 문제만 해결하니 바로 되었네요)
문제는.. 쓸떼없는 패킷까지 전송하게 만드는 VC++....
클라이언트분도 문제를 아시고 급한불 끄면 BCB로 컨버팅 해야 한답니다.
(CPU명령 생성 문제나 MMX명령 컴파일 문제도 있고 하고..)
빌더가 다시한번 좋다고 느껴지는 한편..
왜 많은 개발자가 빌더를 쓰고싶어도 못쓰는지-_-
위와 같은 문제는 단순한 문제고.
좀더 복잡한 프로젝트를 할 경우 어떤 문제가 생기는지도 모르겠네요
저같은 입장으로썬 볼랜드의 웹진영이나 크로스플랫폼-_-전략..
이런거 다 필요없고
VC++과의 호환에 맞춰주면 좋으련만.
덧글
글을 쓰고나니-_-VC++형식으로 컴파일 되게 해달라 라고 쓴거 같은데-_-
그렇게 되면 빌더 안쓰죠 =_=
최소한 LIB/DLL만이라도 VC++에서 바로 사용가능하게 뽑아낼수 있으면 좋을텐데..
문제 1,2,3은 프로그램 성능같은데 큰 문제를 불러오진 않지만..
1바이트가 아까운 네트웍에서 4번째와 같은 문제는 안되죠..
모두 VC++컴파일러가 앞서지 못한 문제지만-_-
볼랜드에서 쫌만 신경쓰면 가능할텐데 -_-
많이 아쉬운 부분이 요즘 또 보이는군요.
덧글2
닷넷을 지원한다고 했는데
빌더로 닷넷환경에서 개발할수 있다는건지.
빌더로 VS.NET 개발툴을 쓰는 프로그래머와 함께 근접적인 개발이 가능한건지 모르겠네요.
(아마 전자겠죠? =_=)
|