从C++调用dll函数
Calling a dll function from C++
我在dll中有一个函数,我想从C++应用程序调用它。dll也是用C++制作的,并且有一个显示dll中存在的函数的def文件。我使用的是visual studio 2010,我通过在链接器"其他库目录"中添加dll的目录,然后在链接器的"输入"中添加DLLname.lib,将其配置为使用dll文件。现在dll中的所有命名空间都可用,但是我需要的函数不可用,因为它们不在任何命名空间下。如何访问这些函数?这些函数是在dll 中声明的
#include "stdafx.h"
#include <stdio.h>
__declspec(dllexport) int somefunction()
{
......
return SomeValue
}
我的问题是如何通过C++应用程序中的dll访问它。
这里似乎有些混乱。将文件添加到链接器输入是针对静态链接库(Windows上的.lib)。使用静态链接的库,代码只需在编译时复制到程序中即可。动态链接库(Windows中的.dll)位于不同的文件(dll)中,并在运行程序时由程序加载。要访问dll中的函数,有两种主要方法:
-
使用dllimport,类似于使用dllexport 导出函数的方式
-
使用LoadLibrary加载DLL,然后使用GetProcAddress获取指向函数的指针。如果您使用这种方法,还需要注意的是,您可能应该在导出的函数上使用
extern "C"
,以避免名称混乱。如果您在使用GetProcAddress
查找函数时遇到问题,可以使用Dependency Walker来检查DLL中的函数名称——根据使用的调用约定,这些名称可能会略有修改。
我想海报是在寻求关于隐式链接的帮助。MSDN隐含链接和维基百科动态链接库使用DLL导入
相关文章:
- 使用c#访问c++dll中带有char*参数的函数时发生AccessViolationException
- Visual c ++,使用字符串引用/指针调用 dll 函数
- 来自 DLL 的函数调用 [表观调用的括号前面的表达式必须具有(指向-)函数类型]
- C++ DLL 引用C++.exe中的函数和类
- 如何使用导出的函数交叉编译 DLL
- 如何在窗口中使用注入的 dll 中的参数调用函数
- 在 Microsoft Access SQL 中调用自定义 DLL 函数时传递的内存地址无效
- 加载由 MATLAB Coder 生成的带有函数的 DLL,该函数调用外部函数
- PowerShell 使用结构类型参数调用 C++ DLL 的导出函数
- 从DLL导出函数,LoadLibrary()需要用TEXT转换的字符串才能编译而不会出错
- 从 C#-DLL 调用函数的 C++ 失败
- 如何在 DLL 内的成员函数中使用互斥/关键节
- 调用 "project" 函数和调用 DLL 函数之间的区别
- 函数指针分配在创建 DLL 后导致错误
- 从动态加载的 dll 内部调用C++函数
- 函数声明中的 WINAPI 标识符C++ DLL 入口点函数中的标识符
- LNK2019某些类函数,但不在其他类函数(DLL 中的模板类)上
- 从库导入函数./ DLL 文件
- 从 ntdll 调用 Nt 函数.dll在 Win32 环境中,C++
- 如何使用ctypes将python列表传递给C函数(dll)