c++ - 我们可以通过哪些不同的方式动态链接 DLL

标签 c++ visual-c++ dynamic-linking

我想动态链接一个 .dll。 有哪些多种方法可以做到这一点?

我知道的一种方法是使用 HMODULE WINAPI LoadLibrary(_In_ LPCTSTR lpFileName) 功能。 还有别的办法吗? 我试图理解以下代码:

#if defined WIN32
    // We want to define DTE_DLL_EXPORT if we are making
    // a dll, but not if we are making a static library...
    #if defined DTE_STATIC
        #define GFITDTE_ENTRYPT
    #else
        #if defined _GFITDTE_BUILD_
            #define GFITDTE_ENTRYPT __declspec(dllexport)
        #else
            #if defined DTE_IMPORT
                #define GFITDTE_ENTRYPT __declspec(dllimport)
            #else
                #define GFITDTE_ENTRYPT
            #endif
        #endif
    #endif
#else // Not WIN32

有人能解释一下上面的代码吗??

最佳答案

显示的代码与 LoadLibrary 无关。这是典型的头文件,这反过来意味着您正在构建一个不应通过 LoadLibrary 加载的 DLL。相反,编译器从头文件中知道函数原型(prototype),链接器使用导入库 来设置 DLL 链接。

关于c++ - 我们可以通过哪些不同的方式动态链接 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34788988/

相关文章:

C++ 通过仿函数参数计数类型重载

C#调用C++单例基于类的dll

C++ Visual Studio : linking using pragma comment

c# - 使用 C++ 代码在 Visual C# 中 Pinvoke 问题

c++ - 如何用 Unicode 处理 PCRE?

xcode - 链接被提升.. 什么是-rpath? macOS X

linux - 备用 glibc 动态链接器 (ld.so) 的库路径顺序

c++ - Cuda Thrust内存管理

c++ - 使用 MPI 发送二维数组

c++ - 无法将参数 5 从 'SIZE_T *' 转换为 'size_t *'——为什么?