gpt4 book ai didi

c - 访问 64 位 DLL 函数时出错

转载 作者:行者123 更新时间:2023-12-04 20:56:59 25 4
gpt4 key购买 nike

我使用 Microsoft Visual Studio 2015 创建了一个 64 位 DLL 文件。
Visual C --> Win32 项目。

squareMain.c 的代码如下:

 long _stdcall square(long a)
{
return a*a;
}

Defile.def 的代码如下:
    LIBRARY "square"
EXPORTS
squareforExl=square

我已经使用配置管理器设置平台和事件解决方案平台为 64 位 DLL 构建了 x64 的 DLL。

我必须通过 Excel vba7 访问这个 DLL 函数。
VBA中的函数如下:
Private Declare PtrSafe Function squareforExl Lib "C:\math.dll" (ByVal x As Long) As Long

Sub square()
Dim b As Long
b = 5
Dim c As Long
Debug.Print b
c = squareforExl(b)
Debug.Print "Square : " & c
End Sub

尝试在上面的代码中访问 DLL 函数 squareforExl() 时,它显示以下错误 msgBox:
Run time Error '53':  File not Found :"C:\math.dll"

我尝试将文件放在不同的位置目录中,甚至在系统文件夹中。

我已经在 32 位版本的 Office 中成功编译并执行了 32 位 DLL。
我的问题是如何在 64 位版本的 Office 中访问 64 位 dll 的 DLL 函数?

最佳答案

请检查您的 Office 安装是 64 位安装还是 32 位安装。这意味着,如果 VBA 编辑器在 VBA7 中,这并不意味着 office 是 64 位的。看来,您在 64 位操作系统上安装了 32 位办公室(即 2007 年后期版本,即 VBA7)。请在 32 位创建 DLL 并在 VBA 中使用 Ptrsafe(因为它是 VBA7),错误将被取消。对于 64 位操作系统上的 64 位 Office 安装,使用 Ptrsafe 调用 64 位 DLL 不会有任何问题。我会同时使用两种用法,即(1. 64 位操作系统上的 64 位办公室。2. 32 位办公室和 64 位操作系统上的 VBA7)和工作。

关于c - 访问 64 位 DLL 函数时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45749682/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com