VC 호출 Delphi DLL

4740 단어 Delphi
다른 것은 아무것도 아니야, 반드시 호출에 성공할 수 있을 거야.그러나 의외로 ShowMessage 함수는 DLL에서도 쉽게 호출될 수 있다.그 밖에 델피의 var은 VC의 인용에 해당하기 때문에 함수 원형에 정확하게 표시해야 한다. 그렇지 않으면 일반 변수, 심지어 상량을 전달할 수 없다.
VC++ 코드:
// callDLL.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "windows.h"

int main(int argc, char* argv[])
{
    printf("Hello World!
"); double a=10.4; HINSTANCE hDllInst = LoadLibrary("fonctionMathematique.DLL"); if(hDllInst) { typedef double (cdecl *MYFUNC)(double, double, double&); // MYFUNC fun1 = NULL; // // fun1 = (MYFUNC)GetProcAddress(hDllInst,"_AddD"); // fun1 = (MYFUNC)GetProcAddress(hDllInst,"_AddDouble"); // DLL if(fun1) { // printf("%f
",fun1(5.3));
printf("%f
",fun1(1.1, 5.2, a)); printf("%f
",a); } FreeLibrary(hDllInst); } return 0; }

Delphi 코드:
 function _AddDouble(iVarA: Double; iVarB: Double; var iResult:Double):Double; cdecl; export;
 begin
   ShowMessage(FloatToStr(iVarA));
   iResult:=iVarA+iVarB;
   result:=iResult;
 end;

 function _AddD(a: double): double; cdecl;
 begin
    result:=a+10.1;
 end;

또한 VC에서는 기본적으로 cdecl 방식을 사용할 수 있습니다.나는 전달 방식을 쓰지 않으면 성공적으로 호출할 수 있다.

좋은 웹페이지 즐겨찾기