vs2015动态库创建与调试_对象能否调用静态方法

vs2015动态库创建与调试_对象能否调用静态方法VS2008生成动态库、静态库并引用案例_vs2008创建动态库

静态库

创建静态库

  1. 打开VS2008创建项目如下:

vs2015动态库创建与调试_对象能否调用静态方法

  1. 选择静态库

vs2015动态库创建与调试_对象能否调用静态方法

  1. 创建文件

vs2015动态库创建与调试_对象能否调用静态方法

// add.h
#ifndef _ADD_H_
#define _ADD_H_

#include <stdio.h>

#ifdef __cplusplus
extern "C" {
#endif

__declspec(dllexport)  int myAdd(int a, int b);

#ifdef __cplusplus
}
#endif

#endif
// add.cpp
# include "add.h"

int myAdd(int a, int b){
    printf("调用自己的---静---态库函数!\n");
    return a + b;
}
  1. 编译生成静态库

vs2015动态库创建与调试_对象能否调用静态方法

静态库调用

配置调用

  1. 新创建一个WIN32的控制台程序,将上面生产的libadd.lib库跟add.h拷贝到新创建的项目目录下

vs2015动态库创建与调试_对象能否调用静态方法

  1. 新建项目添加头文件目录

vs2015动态库创建与调试_对象能否调用静态方法

  1. 添加静态库引用目录

vs2015动态库创建与调试_对象能否调用静态方法

  1. 添加静态库引用

vs2015动态库创建与调试_对象能否调用静态方法

  1. 编译运行测试

vs2015动态库创建与调试_对象能否调用静态方法

函数调用

将配置调用的第3、4步去掉,调用#pragma comment(lib, “库路径”)函数调用库函数

vs2015动态库创建与调试_对象能否调用静态方法

动态库

创建动态库

  1. 跟创建静态库步骤基本一致,创建时选项选择DLL

vs2015动态库创建与调试_对象能否调用静态方法

  1. 代码跟静态库代码一致,打印稍作区分,将“静”改为“动”

vs2015动态库创建与调试_对象能否调用静态方法

  1. 编译运行生成动态库

vs2015动态库创建与调试_对象能否调用静态方法

动态库调用

配置调用

  1. 新创建一个WIN32的控制台程序,将上面生产的dlladd.lib、dlladd.dll库跟add.h拷贝到新创建的项目目录下(dlladd.lib、dlladd.dll拷贝到lib下)

  1. 跟静态库的配置基本一样

  1. 编译和运行

vs2015动态库创建与调试_对象能否调用静态方法

  1. 这是因为运行时找不到动态库,将动态库拷贝到exe生成的目录下

vs2015动态库创建与调试_对象能否调用静态方法

函数调用

函数调用链接器下面两个地方的配置是不需要的,但引用目录需要配置

vs2015动态库创建与调试_对象能否调用静态方法

main函数代码如下

#include <windows.h>
#include "add.h"
typedef int (* ptrfunc)(int a, int b);

int main() {
    ptrfunc addFun;

    HINSTANCE hDll = LoadLibrary(L"G:\\libProject\\test_main\\lib\\dlladd.dll"); 

    if(hDll == NULL) {
        printf("LoadLibrary return error : %d\n", (int)GetLastError());
        return -1;
    }

    addFun = (ptrfunc)GetProcAddress(hDll, "myAdd");
    if (addFun == NULL)
    {
        printf("GetProcAddress return error : %d\n", (int)GetLastError());
    }

    int result = addFun(2, 3);
    printf("2 + 3 = %d\n", result);

    FreeLibrary(hDll);
    return 0;
}

编译和运行

vs2015动态库创建与调试_对象能否调用静态方法

今天的文章vs2015动态库创建与调试_对象能否调用静态方法分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/84533.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注