2009-12-27 2 views
3

BCC 5.5 명령 줄 컴파일러로 libxml2를 컴파일했습니다. 이제 Delphi 응용 프로그램에 링크 할 많은 .obj 파일이 있습니다. 불행히도 memcpy, open, recv 등과 같은 표준 C 라이브러리 함수를 가리키는 많은 "불만족 한 외부 또는 외부 선언"오류가 발생합니다 ... 올바르게 컴파일하려면 어떻게해야합니까? msvcrt.dll이나 다른 외부 라이브러리에 의존하는 것을 피하고 싶습니다.C .obj 파일을 표준 C 종속성을 해결하는 Delphi 응용 프로그램에 연결

미리 감사드립니다.

답변

13

델파이의 버전에 따라 링크 할 수있는 crtl.dcu라는 유닛이 있어야합니다. crtl을 사용하는 유닛에서 각 .obj 파일에 $ L 지시문을 사용하십시오. Windows, WinSock 등과 같은 다른 여러 장치를 "사용해야"할 수도 있습니다. 요점은 링크 단계에서 해결할 기호와 함수를 제공하는 것입니다.

이것은 midas.dll을 빌드하는 데 사용 된 DataSnap TClientDataSet 코드에서 정적으로 링크하는 데 사용되는 것과 동일한 기술입니다.

+0

불행히도 Delphi 설치에는 crtl 유닛이 없습니다 ... Delphi7 PE입니다. – migajek

+0

적어도 D2007로 업그레이 드하는 가장 좋은 이유 같습니다 .-) –

+0

+1. 멋진 팁. Allen에게 감사드립니다. –

0

이러한 기능을 사용하지 말고 운영 체제 기능 (kernel32/system32)을 직접 호출하도록 다시 작성하십시오.

+0

내가 컴파일하고있어 C 코드는 매우 복잡 libxml2를 인 루디의 기사를 읽어야한다, 나는 거기에 어떤 변화를 방지하고 싶습니다. – migajek

+0

@michal : LibXML2에 사용할 수있는 몇 가지 무료 Delphi 래퍼가 있다는 것을 알고 계십니까? 마르코 칸투 (Marco Cantu)가 권장하는 방법은 다음과 같습니다. http://sourceforge.net/projects/libxml2-pas. 이 구현에 대한 Marco의 블로그 권장 사항은 http://blog.marcocantu.com/blog/delphicomps.html –

+0

에서 확인할 수 있습니다. libxml2는 정확히 무엇입니까? 빌드의 힙이 있습니다. –

1
+1

스택 오버플로에 오신 것을 환영합니다. 그게 좋은 기사지만,이게 더 나은 대답이되게하려면, * 왜 * 그게 좋은 기사인지 설명해야합니다. 기대할 것을 말하십시오. 특히이 기사에서는 문제를 해결하기위한 두 가지 기술에 대해 설명합니다. 하나는 누락 된 모든 기능을 수동으로 구현하는 것입니다. (이 기사에서는 방법을 보여줍니다.) 다른 방법은 이미 누락 된 모든 기능을 구현 한 msvcrt.dll을 사용하여 링크하는 것입니다. (두 번째 방법은 델파이에서 쉽게 구현할 수없는 printf와 같은 함수에 특히 유용합니다. –

관련 문제