C++ 动态链接
如何检查系统上的动态链接实现情况?以及对动态链接的代码有哪些限制。代码动态链接的要求是什么?无论操作系统是什么,似乎您都在问是否有任何可移植的方法来检查您的操作系统功能 唯一可以说的是“阅读文档”C++ 动态链接,c++,dynamic,linker,C++,Dynamic,Linker,如何检查系统上的动态链接实现情况?以及对动态链接的代码有哪些限制。代码动态链接的要求是什么?无论操作系统是什么,似乎您都在问是否有任何可移植的方法来检查您的操作系统功能 唯一可以说的是“阅读文档” 就我所知的操作系统而言,Windows使用DLL进行动态链接,Unix使用.so文件。两者都提供了手动或自动加载库入口点的功能。看起来,无论操作系统是什么,您都在询问是否有任何可移植的方法来检查您的操作系统功能 唯一可以说的是“阅读文档” 就我所知的操作系统而言,Windows使用DLL进行动态链接,
就我所知的操作系统而言,Windows使用DLL进行动态链接,Unix使用
.so
文件。两者都提供了手动或自动加载库入口点的功能。看起来,无论操作系统是什么,您都在询问是否有任何可移植的方法来检查您的操作系统功能
唯一可以说的是“阅读文档”
就我所知的操作系统而言,Windows使用DLL进行动态链接,Unix使用
.so
文件。两者都提供手动或自动加载库入口点的功能。动态链接由操作系统在运行时执行
- 因此,它有以下限制:
- 特定于操作系统 例如,Windows.dll不能直接链接到linux, 你需要在那里构建它并生成,反之亦然
- DLL是特定于平台的: X64 dll不能链接到Win32项目
- 它们也是特定于配置的: 如果你有一个发布dll,你不能将它链接到另一个项目 设置为调试的配置
- 它还取决于调用约定: 例如,如果.dll项目的调用约定设置为uu cdecl,则 被调用方将其调用约定设置为u stdcall,这可能会导致运行时异常等问题
- 因此,它有以下限制:
- 特定于操作系统 例如,Windows.dll不能直接链接到linux, 你需要在那里构建它并生成,反之亦然
- DLL是特定于平台的: X64 dll不能链接到Win32项目
- 它们也是特定于配置的: 如果你有一个发布dll,你不能将它链接到另一个项目 设置为调试的配置
- 它还取决于调用约定: 例如,如果.dll项目的调用约定设置为uu cdecl,则 被调用方将其调用约定设置为u stdcall,这可能会导致运行时异常等问题
阅读libtool
源代码
。请记住,DLL不能跨操作系统移植。Windows DLL在Unix或Linux操作系统上不起作用。或者更全面的方法是
阅读libtool
源代码
。请记住DLL不能跨操作系统移植。Windows DLL在Unix或Linux操作系统上不起作用。实际上,在调试项目中几乎没有什么可以阻止您使用发行版DLL,而这实际上是非常常见的。例如,Windows API是通过将Kernel32.DLL、User32.DLL、GDI.DLL等加载到进程中来实现的。您几乎总是加载Windows版本DLL,即使在调试时也是如此。(大多数开发人员甚至不知道Windows的调试版本叫什么——它是经过检查的版本)实际上,几乎没有什么可以阻止您在调试项目中使用发行版DLL,事实上这是非常常见的。例如,Windows API是通过将Kernel32.DLL、User32.DLL、GDI.DLL等加载到进程中来实现的。您几乎总是加载Windows版本DLL,即使在调试时也是如此。(大多数开发人员甚至不知道Windows的调试版本叫什么——它是经过检查的版本)