是否可以使用 C 加载 DLL 并使用其功能?
我是 C 新手,我正在尝试在互联网上搜索一些好的参考资料;但我找不到。
任何帮助,将不胜感激!
我在 Windows 7、64 位的 Code::Blocks 中使用 GNU GCC。
是否可以使用 C 加载 DLL 并使用其功能?
我是 C 新手,我正在尝试在互联网上搜索一些好的参考资料;但我找不到。
任何帮助,将不胜感激!
我在 Windows 7、64 位的 Code::Blocks 中使用 GNU GCC。
HMODULE hModule = LoadLibrary(<dll file name>)
接下来GetProcAddress(hModule, <function name>)
将使用 WinAPI 完成这项工作。
我认为您应该调查该LoadLibrary
功能。
http://msdn.microsoft.com/en-us/library/ms684175.aspx
将指定的模块加载到调用进程的地址空间中。指定的模块可能会导致加载其他模块。
使用 MinGW 构建 DLL,这里有一些说明:
首先,您需要将函数标记为导出,以便 DLL 的调用者可以使用它们。为此,请修改它们,使它们看起来像(例如)
__declspec( dllexport ) int add2(int num){
return num + 2;
}
然后,假设您的函数位于名为 funcs.c 的文件中,您可以编译它们:
gcc -shared -o mylib.dll funcs.c
-shared 标志告诉 gcc 创建一个 DLL。
对于一个免费的 IDE,它将自动化构建 DLL 所需的所有标志等,看看优秀的 Code::Blocks,它与 MinGW 配合得很好。
此外,请参阅 MinGW Wiki 上的文章创建用于 Visual Basic 的 MinGW DLL。