- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在使用 Code::Blocks 并且讨厌手动链接 DLL。我找到了 LoadLibrary()
功能,我想知道它是否像 .a
一样工作或 .lib
文件会。这个功能是这样工作的吗?如果没有,我可以通过编程方式(如果有的话)做什么来链接 DLL,而不必通过执行 Project < Build options < Linker settings < add < ...
来链接 DLL。方法?
最佳答案
LoadLibrary
将请求的库(以及它需要的所有库)加载到进程的地址空间中。为了访问该库中的任何代码/数据,您需要找出新加载的内存区域中的代码或数据地址。您需要使用 GetProcAddress
.
此过程与在构建时添加库之间的区别在于,对于构建时库,编译器准备引用给定函数的位置列表,链接器将该列表放入 .exe,然后运行时链接器加载库,为函数名称执行 GetProcAddress
的等效操作,并将地址放入编译器标记的所有位置。
当您没有这种自动支持时,您必须声明一个指向函数的指针,自己调用 GetProcAddress
,并将返回值分配给您的函数指针。然后,您可以像调用任何其他 C 函数一样调用该函数(注意“C”部分 - 当您使用 C++ 时,上述过程因名称修改而变得复杂,因此请使用 extern "C"
)
关于C++ - LoadLibrary() 是否实际链接到库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17176892/
我正在开发一个 voip 调用应用程序。我需要做的是在接到来电时将 Activity 带到前台。我在应用程序中使用 Twilio,并在收到推送消息时开始调用。 问题是我试图在接到任何电话时显示 Act
我是一名优秀的程序员,十分优秀!