2017-2018-2 20155228 《信息安全系统设计原理》 动态库的生成和调用

2017-2018-2 20155228 《信息安全系统设计原理》 动态库的生成和调用

不得不说一下关于环境的问题

只要我打一个响指,一半的安装在win7上的VC6.0都会因为兼容性问题直接崩掉

懒得研究怎么解决兼容性的问题了,直接开一个winXP虚拟机完美运行vc6.0,省时省心,岂不美哉

研究大佬的博客的时候

Windows下静态库与动态库的创建与使用

尝试使用.def文件生成动态库并使用隐式链接到工程时,发现这个方法仅适用于动态库所在的工程和调用动态库的工程同时处于一个工作空间

如图所示,0527helloworld是动态库所在的工程,0527testhelloworld是调用动态库的工程,两个工程都是处于名为0527helloworld的工作空间里面的

#include "stdafx.h"
#include "../0527helloworld/0527helloworld.h"

int main(int argc, char* argv[])
{
    int iRet;
    printf("Hello World!\n");
    iRet = cmp(3,8);
    printf("return value is: %d\n",iRet);
    return 0;
}

可以看到声明头文件的时候是声明了位于其他工程的头文件:#include "../0527helloworld/0527helloworld.h"

这应该就是其他工作空间的工程就算把.dll和.lib拷到工作目录下也添加了.h文件也无法调用动态库的原因

后来在网上找到另外一个方案,解决了这个问题

VC++ 6.0如何创建与调用动态链接库

现在简单介绍一下这个方案的流程

算了,今天太晚了我要睡觉了,明天再说

原文地址:https://www.cnblogs.com/besti20155228/p/9098026.html

时间: 2025-01-02 15:27:10

2017-2018-2 20155228 《信息安全系统设计原理》 动态库的生成和调用的相关文章

C++(VS2012)DLL动态库的生成和调用

DLL动态链接库的生成: 首先打开VS2012,新建——项目——Win32控制台应用程序(项目名称:ConsoleApplication1)——空项目 新建一个源文件source.cpp 先用控制台exe配置类型自己定义函数,并通过主函数调试 然后可以通过项目——属性——配置属性——常规——项目默认值——配置类型下 选择动态库(.dll)选项 然后点击Build,会在工程的Debug目录下生成一个DLL文件(ConsoleApplication1.dll) extern "C" _de

动态库的生成和调用

http://www.jb51.net/article/36447.htm c++中.dll与.lib文件的生成与使用的详解 -------------------------------------------------------------------------------- 两种库: • 包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库dynamic link library.• 包含函数代码本身,在编译时直接将代码加

malloc,colloc,realloc内存分配,动态库,静态库的生成与调用

 1.在main方法里面直接定义一个非常大的数组的时候,可能会出现栈溢出:错误代码演示: #include<stdio.h> #include<stdlib.h> void main() { int a[1024 * 1024]; int num = 100; system("pause"); } 错误截图: 2.在定义数组的时候要定义数组的长度,否则会出现错误.(特例:在GCC编译器下,不会出现错误(因为标准不一样)). 3.打印并且赋值的是: for (

linux下动态库的编写和调用

linux下动态库的编写和调用 linux下编写和调用一个简单的动态库大概分为以下几个步骤: - 创建动态库程序文件 add.c int add(int a,int b) { return a+b; } 创建引用头文件 head.c #ifndef _HEAD_ #define _HEAD_ int add(int a,int b); #endif 生成目标文件 生成要加编译器选项 -fpic gcc -fpic -c add.c 然后生成动态库 注意使用链接器选项 -shared gcc -s

Linux下动态库的生成和使用

一.动态库的基本概念 1. 动态链接库是程序运行时加载的库,当动态链接库正确安装后,所有的程序都可以使用动态库来运行程序.动态链接库是目标文件的集合,目标文件在动态链接库中的组织方式是按照特殊方式形成的.库中函数和变量的地址是相对地址,不是绝对地址,其真实地址在调用动态库的程序加载时形成. 2. 动态链接库的名称有别名(soname), 真名(realname)和链接名(linker name).别名由一个前缀lib,然后是库的名字,再加上一个后缀“.so”构成.真名是动态链接库真实名称,一般总

Linux系统下动态库的生成

Linux系统下动态库的生成 一.简述 Linux下动态库文件的扩展名为 ".so"(Shared Object).按照约定,所有动态库文件名的形式是libname.so(可能在名字中加入版本号).这样,线程函数库被称作libthread.so.静态库的文件名形式是libname.a.共享archive的文件名形式是libname.sa.共享archive只是一种过渡形式,帮助人们从静态库转变到动态库.      小编综合自己学习体会以及网络上较好的内容,以简单的例子介绍动态库文件的生

linux c: 静态库和动态库的生成和使用

场景: main函数需要两个接口,一个求和函数,一个打印函数. int sum(int i, int j); 求两个int数字的和. void show(int i, char* name); 打印i的值和它的名称. 现在,需要制作: 一个静态库libcalc.a,提供sum的接口; 一个动态库libshow.so,提供show的接口. #include <stdio.h> #include "calc.h" #include "show.h" int

解决mingw动态库在vs下调用 release版本中会出现的奇怪问题

REF | NOREF /OPT:REF 清除从未引用的函数和/或数据,而 /OPT:NOREF 保留从未引用的函数和/或数据. 默认情况下,LINK 移除未引用的封装函数. 如果对象已经用 /Gy 选项编译过,它包含封装函数 (COMDAT). 此优化称为可传递的 COMDAT 消除. 若要重写该默认值并在程序中保留未引用的 COMDAT,请指定 /OPT:NOREF. 可以使用 /INCLUDE 选项重写特定符号的移除. 如果指定了 /DEBUG,/OPT 的默认项是 NOREF(否则,为 

VC++6.0 动态库的创建与调用(非MFC的dll)

非MFC动态库的创建... 一个lib.cpp,一个lib.h /*lib.h*/ #ifndef LIB_H #define LIB_H //声明add为dll的导出函数. extern "C" int _declspec(dllexport)add(int x,int y); #endif 也可以加上def文件 ; lib.def : 导出DLL函数 LIBRARY DllTestDef EXPORTS add @ 1 非MFc动态库的调用 1.静态调用 //静态的调用dll动态库