您现在的位置是:网站首页> 新闻快讯> 软件使用 新闻快讯
msvcr110 dll(msvcr110.dll放在哪里)
小玉2023-07-05【软件使用】
235人已围观
简介VB/VBA为什么使用SQLite数据库有点恼火?1、SQLite是一款开源、小巧不吃资源,但功能强劲的文件型关系数据库。其首发于2000年,距

msvcr110 dll(msvcr110.dll放在哪里)
最后更新:2023-07-05 01:08:39
推荐指数:
VB/VBA为什么使用SQLite数据库有点恼火?1、SQLite是一款开源、小巧不吃资源,但功能强劲的文件型关系数据库。其首发于2000年,距今已有21个年头。各大平台系统均支持,广泛用于嵌入式场景,可被各大语言使用。2、唯独VB/VBA不行,目前除了dhRichClient3这个第三方库对其有支持外,但也仅限于免费版(数据不能加密)。这是为何呢?难道真如网络鄙视语所说:可别吹VB/VBA了,你调个SQLite用用!3、其实这跟VB/VBA的设计定位有关,一般情况下VB/VBA连指针都藏着不让用,所有API的调用也都由MSVBVM60.dll给包揽了,使用者只能在这个运行库的保护下作业,要像C那样自由是很困难的(至少不会那么直白)。4、大家在VB/VBA中调用函数(无论是API函数还是自定义函数)时,可能从来没听说过,调完函数需要清理平衡堆栈。如果这样,一些复杂的概念就会切进来,就很难一时半会解释得清楚了。显然是不符合VB/VBA的定位的。5、因为,VB/VBA中,函数的调约默认就是标准调约,由函数自己清理堆栈。所以,函数里的局部变量,在声明分配的内存,从来不需要释放。VB/VBA的编译器,会自动添加清理堆栈的代码。6、而SQLite是C库,为了提高性能,采用的是C调约。该调约需要调用者自己清理平衡堆栈。VB/VBA连现成都指针都没有,更别提内嵌汇编了。又如何清理堆栈?那可需要汇编指令啊。所以,VB/VBA可使用的API就少了很多,其中就包括未文档化的API和C调约API。7、有很多人想了很多办法,用ShellCode的方式能够调用C调约定函数,但是依然无法使用SQLite,这是为何呢?8、原因还是出在C调约上面。调用C调约的函数,VB/VBA只需要负责清理堆栈就可以。但是SQLite还有C调约的回调函数。如果说C调约的API,是C库提供,VB/VBA调用。那么,C调约的回调函数,就是VB/VBA提供,C库使用。这是两个方向,两个思路。9、众所周知,VB/VBA只能写标准调约的函数,如何写出C调约的函数呢?如果不能,自然不能使用原汁原味的SQLite。如何在VB/VBA中调用C调约的API,又如何提供C调约的函数,请关注BtOfficer,更多精彩正在发育成长中[偷笑]#vba##vb##编程##sqlite##数据库##C调约##标准调约#
很赞哦! (0)
上一篇:yy盒子官方下载(YY小盒子)
相关文章
文章评论
验证码: