c/c++创建动态库

上一篇 用的命令

cl /c xx.cpp    //编译成obj
link /dll /out:mou1.dll x.obj   //链接生成dll 文件

cpp 的导入可以直接声明 导出函数

extern "C"  __declspec(dllexport) void mou1()
{
    puts("mou1");
}

 不需要加

__declspec(dllexport)
也可以在当前文件里面写def 导出文件

 

 

接着命令 导出函数

link /dll /def:mou.def /out:mou1.dll x.obj

 

 

 

dumpbin /exports mou1.dll

查看导出函数

 

 写代码调用dll

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>


typedef void (*fun)();

int main()
{
    //mou1();
    //加载这个dll
    HMODULE hModule=LoadLibrary(L"mou1.dll");
    //获取导出函数地址
    fun pfn = (fun)GetProcAddress(hModule, "mou1");
    printf("%p", pfn);
    if (pfn!=NULL)
    {
        pfn();
    }
    //卸载
    FreeLibrary(hModule);
    system("pause");
}

 

 

 

如果要导出类必须需要用  关键字

__declspec(dllexport) 

 

 但是也是以函数形式导出的 构造函数,析构函数。。

 

posted @ 2021-08-08 03:00  紅人  阅读(148)  评论(0编辑  收藏  举报