• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

VC调用DelphiDLL

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

别的没什么,是一定可以调用成功的。但是意外的是,ShowMessage函数在DLL里也可以轻易被调用。此外,Delphi里的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!\n");
    
    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\n",fun1(5.3));
            printf("%f\n",fun1(1.1, 5.2, a));
            printf("%f\n",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方式。我没写传递方式就可以成功调用。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Delphi的TSpeedButton按下和弹起效果发布时间:2022-07-18
下一篇:
matlab拟合函数的三种方法发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap