【发布时间】:2018-06-08 04:02:49
【问题描述】:
我创建了一个依赖于sqlite3.dll(用于数据库访问和sqlcipher)的DLL(使用C++),我正在尝试使用VBA 访问它。在VBA 我使用以下声明:
Declare Function GetData_VBA Lib "xyz.dll" (ByVal path As String, ByVal id As String, ByRef inputArr() As String, ByRef output() As String) As Boolean
早些时候,当 DLL 不依赖于 sqlite3.dll 时它工作正常,但是当我引入 sqlite3.dll 时它开始抛出错误
错误 53:找不到 xyz.dll
我尝试将声明更改为
Declare Function GetData_VBA Lib "C:\documents\user\...\projects\xyz.dll" (ByVal path As String, ByVal id As String, ByRef inputArr() As String, ByRef output() As String) As Boolean
但它仍然显示相同的东西。我使用dependency walker 来检查对xyz.dll 的所有依赖。我尝试将所有 xyz.dll 和 sqlite3.dll 放在同一位置,但仍然出现同样的错误。
【问题讨论】:
-
你的 dll 是否在 C++ 环境中测试过?
-
是 sqlite3.dll 在你的 PATH 环境变量中的位置,如果不是那么考虑添加它。或者,如果您要控制其安装位置,则可以使用 LoadLibrary 从特定位置手动加载它。
-
您确定您的 .dll 和 sqlite3.dll 之间没有架构不匹配(32/64 位)吗?
-
@TSion.D.P 是的,它正在工作。我使用 VBA(Excel) 调试了代码,它工作正常。
-
@CristiFati 已检查.. 没有不匹配。