VB 에서 만든 DLL 이 ActiveDll 일거라고 생각해고 답변을 드립니다.
C++ Builder 부
// VB 로 만든 Dll 을 읽어 들인다.
try
{
Function Func("VideoCapture"); // Dll 파일명
ModuleRepairMainForm->VCapture.Exec(Func);
}
catch(...)
{
// Dll을 실행하는데 실패하였을때
VideoCaptureButton->Enabled = false;
}
VB 클래스 모듈 부
Option Explicit
Private FCaptureForm As CaptureForm
Private Sub Class_Initialize()
Set FCaptureForm = New CaptureForm
End Sub
Public Sub VideoCapture()
FCaptureForm .ImageBuffer.Save ".\Temp\Temp.BMP"
End Sub
Dll 실행 방법입니다. Dll은 프로그램이 실행되는 폴더에 같이 있어야 합니다.
Dll 파일만 복사해서는 안되거든요 그 Dll 을 레지스트리에 등록하고 사용하면 됩니다
그리고 VB 의 소스에 파일명과 같은 함수를 만들어서 실행하고자 하는 부분을 넣으시면 될겁니다.
Delphi 에서도 같을거라 생각합니다.
그럼 줄거운 하루 보내세요 ~~~
델 초보 님이 쓰신 글 :
: 비베로 만든 dll이 있습니다.
: 콜하는것은
:
: procedure TRealView.Multiddll;
: type
: //dll에 있는 함수 파라메터와 리턴값
: TFunc = function(vxx:single;vyy:single;vzz:single;nam:string):double;stdcall;
: var
: //=================
: H:Thandle;
: MyFunc:TFunc;
: s,press:string;
: dou:double;
: a,b,c:integer;
: //====================
:
: begin
: a:=1;b:=1;c:=1;
: H:=LoadLibrary('MultiD_DLL.dll');
: if(H>32) then //dll을 찾지 못하면 32보다 작은 수를 반환
: begin
: @MyFunc := GetProcAddress(H,'GetValue_MultiD');
: if(@MyFunc <> nil) then //주소를 얻지 못하면 nil을 반환
: begin
: //press:=
: dou:=MyFunc(a,b,c,press);
: // Realview.Caption(s);
: ShowMessage(FloatToStr(dou));
: end
:
: else
: begin
: s:='MultiD_DLL.dll의 GetValue_MultiD(주소 얻는데 실패)를 찾을수 없다!'; //-----1번 오류 출력!!!
: ShowMessage(s);
: end;
: FreeLibrary(H);
: end
: else
: begin
: s:='MultiD_DLL.dll을 찾을수 없다';
: ShowMessage(s);
: end;
:
: end;
:
: 이렇게 불러오고 있는데..dll찾는 것은 되지만 dll에 있는 함수를 찾지 못하고...계속해서
:
: 1번 오류가 출력되고 있습니다.
: 왜 그런지 알려주세요..
: 문법은 맞는거 같은데..혹...틀린점이 있으면 알려주세요!!.
: 부탁 합니다.
|