Import a DLL with C++ (Win32)

荒凉一梦 提交于 2019-12-28 13:21:17

问题


How do I import a DLL (minifmod.dll) in C++ ?

I want to be able to call a function inside this DLL. I already know the argument list for the function but I don't know how to call it.

Is there a way of declaring an imported function in C++ like in C# ?


回答1:


The c# syntax for declaring an imported function is not available in c++. Here are some other SO questions on how to use DLLs:

  • Explicit Loading of DLL
  • Compile a DLL in C/C++, then call it from another program
  • Calling functions in a DLL from C++
  • Call function in c++ dll without header
  • How to use dll's?
  • Is this a good way to use dlls? (C++?)



回答2:


If the DLL includes a COM type library, you can use the #import statement as such:

#import dllname.dll

Otherwise, you'll need to link with an import library, and you'll need to provide a function prototype for your compiler. Typically the import library and a header file with the prototypes are provided by the DLL developer. If you're not, they can be very difficult to produce - unless you already know the argument list for the function, which you say you do. Instructions can be found here, amongst other places.




回答3:


At runtime you can call LoadLibrary() and then call GetProcAddress() to access the function from a DLL. You will need to cast this address to a prototype you define with typedef . See the example at GetProcAddress documentation page.



来源:https://stackoverflow.com/questions/1922580/import-a-dll-with-c-win32

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!