c++ - 如何在另一台电脑的 Excel 中使用依赖于 gsl dll 的 c++ dll?

标签 c++ excel gsl

我在 c++ 中创建了一个 dll。我的 dll 利用了 gsl dll 的一些方法。

我在 Excel 中调用我的 dll,在我的电脑上它运行良好,但如果我尝试从另一台电脑的 Excel 调用 dll 返回错误:

"File not found".

所有文件都在正确的路径中。

可能是什么问题??

更多信息:

我在 Excel 中按以下方式声明函数:

Declare Function MY_DLL_P Lib "C:\Users\Baiso\Desktop\MY_DLL.dll" (ByVal file As String, ByRef results As Double) As Integer

这是Excel函数的一部分:

   sol = MY_DLL_P(objDom.XML, results(0))

    Debug.Print CStr(results(0))
    Debug.Print CStr(results(1))
    Debug.Print CStr(results(2))

    Debug.Print CStr(sol)

Dll 在正确的路径中。

在我的 C++ 项目中,这是头文件 MY_DLL.h:

static __declspec(dllexport) int _stdcall MY_DLL_P(char* file, double* result); 

这是 MY_DLL.cpp 文件:

#include "MY_DLL.h"
#include "gsl\gsl_linalg.h"
#include "gsl\gsl_poly.h"



int MY_DLL_P(char* file, double* result)
{   

   ...

}

这是文件.def

LIBRARY "MY_DLL"


EXPORTS
MY_DLL_P

最佳答案

最可能的解释是您的 DLL 的依赖项未能解析。要么:

  1. GSL 库不能位于目标机器上,或者
  2. 无法在目标机器上找到 MSVC 运行时。

模块加载器将尝试使用 Dynamic-Link Library Search Order 解析 GSL 库.您需要确保可以通过这种方式找到 GSL 库。

至于 MSVC 运行时,您需要确保它在目标机器上可用。通常,您可以通过在目标计算机上安装 MSVC 运行时可再发行组件包来实现这一点。

您可以使用 Dependency Walker 等工具来帮助您诊断此类问题。

另一种可能性是错误来自您实现的函数 MY_DLL_P。也许无法找到的文件是您在其第一个参数中传递给 MY_DLL_P 的文件。

关于c++ - 如何在另一台电脑的 Excel 中使用依赖于 gsl dll 的 c++ dll?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26545195/

相关文章:

java - 使用 Apache POI 4.1.1 从 excel 文件中读取值时出错

excel - 使用 Excel VBA 的垃圾数据检查器

c++ - 在 C/C++ 中使用 GSL 将多边形投影到平面上

从 Fortran 调用 GSL 例程 CQUAD

android - OGLES 2 原生 Android : eglCreateWindowSurface Arguments

c++ - 是否可以使用索引迭代器访问另一个数组的索引?

c++ - 关于异常(exception)成长

excel - RangeToHTML 和单元格中的图像

c++ - 使用 cmake 设置 gsl 时出现问题

c++ - Qt:自定义插槽不起作用