visual如何在c++中使用dll中的结构
visual How to use structs from a dll in c++?
我有一个第三方dll,在我的c++应用程序中没有可使用的lib或头文件。这就是为什么我使用LoadLibrary(_T("xxx.dll"))来加载它。我可以使用GetProcAddress()函数来访问它的函数。
这个dll中有一个结构,我也必须访问它。我该怎么做才能够到并使用它?我浏览了一下这个网站,但只找到了c#而不是c++的例子。在c++中这样做的方法是什么?
谢谢。。。
简短回答:可以使用GetProcAddress检索声明为结构的变量的地址。从GetProcAddress手册页:
从指定的动态链接库(DLL)检索导出函数或变量的地址。
该函数的名称应该是GetSymAddress而不是GetProcAddress,但我跑题了。
答案很长:
假设DLL包含类型为structFoo:的符号实例
typedef struct { int x; int array[100]; } Foo;
__declspec( dllexport ) struct Foo Bar =
{
0xdeadbeef,{0}
};
您可以检索变量Bar的地址,前提是您已经加载了dll,并且其hModule句柄位于以下位置:
struct Foo* Bar = GetProcAddress(hModule,"Bar");
您不能检索结构本身的定义,但我认为这不是您的意思。
注意:我忽略了名称篡改、外部"C"声明,也许还有其他一些你需要考虑的事情,我想读者已经对手头的主题有了基本的了解。
如果您知道结构的语法,例如从C#定义中,那么您可以简单地将其定义添加到.h文件中,将其包含在C++源文件中并使用它。仅此而已。但是,如果你的结构是某种类,并且有成员方法,那么你应该知道成员方法的修饰名称,从.dll动态加载它们,并将它们作为C函数调用。
相关文章:
- C++结构到德尔福记录dll调用
- PowerShell 使用结构类型参数调用 C++ DLL 的导出函数
- 对需要双精度数组和结构作为输入C++ DLL 函数的 C# 调用
- 如何将结构从 C# 传递到C++ DLL?
- 在C 功能执行后,使用GCHANDLE CRALSES将大型结构从C#Unity脚本传递到C DLL
- 如何在 LabVIEW 的 DLL 中打开 OpenCV 结构化边缘检测器的模型文件?
- C++从 DLL 创建结构
- 如何将struct从c#管理到c 不受管理的dll并获得结构
- 使用 char* 将结构传递给 C# 中的 C++ dll 函数
- DLL导入纯虚拟结构和unique_ptr由于Compressed_pair而无法编译
- 如何从Java中的C DLL加载和使用结构和功能
- ATL结构从dll上断开COM对象
- 使用P/Invoke从MFC DLL函数中读取VB.NET中的结构化数据
- 将嵌套结构从 C# 编组到C++ DLL
- 将结构(或类)从C DLL传递到C#(Unity 3D)
- 将 char*[] 从 C++ DLL 结构体传递到 C#
- visual如何在c++中使用dll中的结构
- 将结构从 c++ dll 返回到 Python
- 使用Node.js中包含char数组的结构调用C++dll
- 将结构的列表从C#应用程序传递到C++DLL