"자세히" 다시한번 이 두가지를 부탁드립니다.
1 경우: C, C++로 짜여진 DLL을 델파이에서 사용하고자 합니다. 이럴경우 델파이에서 어떻게 선언하고 이 dll 을 접근하여 관련 함수를 사용할 수 있나요?
그냥 procedure 나 function 뒤에 far; external; 'xxx.dll' 이렇게 하고 쓰면 다른 언어로 컴파일된 DLL을 델파이는 바로 접근하여 사용가능한가요? 아니면 어떻게 해야 하죠?
2 경우: C, C++로 짜여진 DLL을 델파이 DLL 로 다시 바꿔서 써야 할 경우가 있나요? 이럴경우는 xxx.c or xxx.cpp 와 xxx.h 의 소스파일을 델파이의 언어와 문법에 맞게 바꾼다음에 그리고 다시 델파이로 컴파일하여 DLL을 만들면 되나요? 혹시 이렇게 해야 할 경우 왜 그냥 1번 경우로 안하고 이렇게 번거롭게 델파이로 변경하는 작업을 하나요?
그리고 C C++ 로 된 DLL 소스를 델파이 DLL로 바꾸는 샘플 좀 부탁합니다.
요즘 이것 때문에 고심이 많습니다. 누구 자세히 이 해결안좀 부탁드려요 ^^
1번은... 책을 좀 보시는것이 좋을것 같네요...
far는 16비트시절의 잔재이구요, 현재의 델파이에서는 쓰실 필요가 없습니다.
다른 언어로된 모든 DLL을 쓸 수 있는 것은 아니구요. 다른 언어에서 쓸 수 있도록 범용적으로 만들어진 DLL만 사용할 수 있습니다. DLL을 만든 컴파일러에만 있는 특화된 기능을 쓰면 다른 컴파일러에서는 사용할 수 없습니다.
DLL은 정적이나 동적으로 로딩해서 사용하실 수 있구요... 자세한 것은 책을 보시거나 델파이 도움말을 보시기 바랍니다.
아래는 사용하는 예제입니다.
Unit Test;
interface
function SendMessage(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
implementation
function SendMessage; external 'user32.dll' name 'SendMessageA';
end.
2번의 경우는 거의 보지 못한것 같네요. DLL이란게 범용성을 위해서 만들어진 것이 기 때문에 포팅해서 다시 만들 필요는 없다고 봅니다.
이러한 범용성에 위배되서 델파이에서 그 DLL을 사용하지 못하는 경우는 어쩔수 없이 님 말처럼 델파이로 포팅해서 사용할 수도 있겠지만...
예제는 델파이의 Windows.pas유닛을 보시기 바람니다. Window API를 델파이에서 쓸 수 있도록 해놓은 유닛이니까요...
^^ 항상 즐코하세요...