简单实现c++动态链接库
来源:互联网 发布:java项目案例分析 编辑:程序博客网 时间:2024/06/05 23:17
软件:vs2013 功能:简单实现c++动态链接库过程
先建一个主文件夹,里面可以放两个工程文件夹,然后存放各自的工程文件,看一下结构
在主工程文件中新建一个空项目添加main.cpp
此时main.cpp中添加代码:
#include<iostream>
using namespace std;
void main()
{
cout << "test" << endl;
system("pause");
}
编译通过一切正常,在解决方案上右键->添加->新建项目,选择win32项目->下一步->选择DLL->完成
空项目可点可不点,点的话解决方案中有两个工程文件main和dll,dll,中有一些自带的文件可以不用管。在dll工程中添加testdll.h和test.cpp,
.h文件中放入代码:
#ifndef DllTest_H_
#define DllTest_H_
#ifdef MYLIBDLL
#define MYLIBDLL extern "C" _declspec(dllimport)
#else
#define MYLIBDLL extern "C" _declspec(dllexport)
#endif
MYLIBDLL int Add(int plus1, int plus2); //dll中的添加的函数声明
//You can also write like this:
//extern "C" {
//_declspec(dllexport) int Add(int plus1, int plus2);
//};
#endif
前面的宏定义是dll相对于主工程文件调用时的输入和dll文件调用时的输出,
在.cpp文件中放入以下代码:
#include "stdafx.h"
#include "dlltest.h"
#include <iostream>
using namespace std;
MYLIBDLL int Add(int plus1, int plus2)
{
int add_result = plus1 + plus2;
return add_result;
}
vc6里面必须加宏定义MYLIBDLL这里试可加可不加
点击生成解决方案则在main文件夹下debug中生成
现在在main.cpp中就可以调用这两个文件了
先在工程中添加testdll.h的头文件
1 ,可以把dll文件下的头文件复制到main下project中。(该功能的话要重新复制不推荐)。
2,也可以项目->属性->c/c++->常规->附加包含目录->填写路径,可以填写绝对路径(文件夹移动程序出错,不推荐)
也可以填写相对路径(推荐,只要不动文件夹里面的东西程序正常)。
填写路径时默认当前路径为主函数工程下的目录中:"..\..\dll"
而dll和lib文件在Debug中则需返回上一层进入Debug中
如图:
在main.cpp中添加代码:
#include"testdll.h"
#include<iostream>
using namespace std;
#pragma comment(lib, "..\\Debug\\Win32Project1.lib")
void main()
{
int a, b;
cout << "please input two number:" << endl;
cin >> a >> b;
cout << a << "+" << b << "=" << Add(a, b) << endl;
system("pause");
}
调用lib文件时
注意在程序中写相对路径需写为..\\Debug\\Win32Project1.lib写为..\Debug\Win32Project1.libvs不认识会出错
也可以在属性->链接->输入->附加依赖项中输入上面的路径。
此时编译会出错无法打开lib文件,下一步:在main工程文件上右键
在项目依赖项中勾选dll,再次生成解决方案,成功
结果正确
- 简单实现c++动态链接库
- c动态链接库
- 动态链接库-实现
- 实现动态链接库
- 动态链接库实现
- 动态链接库的简单实现(原创)
- .Net(c#) 通过 Fortran 动态链接库,实现混合编程
- LoadRunner如何实现动态链接库(C++)的调用
- Linux C语言开发 动态链接库以及静态链接库编程简单介绍
- Linux C开发 动态链接库以及静态链接库编程简单介绍
- 【C/C++】静态链接库、动态链接库、extern "C"
- 【C/C++】automake生成动态链接库
- linux C++/C 动态链接库使用
- linux C++/C 动态链接库使用
- C/C++——动态链接库
- C/C++-动态链接库(DLL)
- java 解决调用c语言实现简单HelloWorld函数生成.dll动态链接库的32位dll文件无法在64位机上运行
- 用java调用C或C++动态链接库原来如此简单
- 初识三层
- 【数组模拟链表(双向)】UVA
- HTML和CSS常见面试题
- Raising Bacteria——个人c++解
- 代理模式和反射API
- 简单实现c++动态链接库
- HTML与XML比较
- 凸包的解法
- winform
- 561. Array Partition I
- java编程---用户通讯录管理小程序--(xml拓展)(一)--登录模块以及注册模块
- SG函数入门——【2017.5.28提高组模拟】Simple Game
- Unity3D:Gizmos画圆(原创)
- pipelines和重定向命令