C++生成库并C++可以调用(windows)
项目需要,用C++封装库,然后JAVA调用C++库的内容,这里记下过程,
这里先实现C++调用C++的库
1. 创建解决方案测试库
使用VS2015建立了两个工程,一个是来生成库,一个来调用库
1.1 先创建一个可以生成动态链接库的工程
打开vs >> 文件 >> 新建 >> 项目 ,选择 Visual C++ – Win32 – Win32 控制台应用程序
在应用程序类型选择 DLL,其他全部设置为空。
在工程下头文件右键添加新项,选择头文件
添加测试API接口
void helloSDK();
int mySum(int a, int b);
int myMax(int a, int b, int c);
- 实现API函数
void helloSDK()
{
std::cout << "hello sdk" << std::endl;
}
int mySum(int a, int b)
{
return (a + b);
}
int myMax(int a, int b, int c)
{
int max = a;
if (max < a)
max = a;
if (max < b)
max;
}
- 添加.def文件
Source.def
LIBRARY "testSDK"
EXPORTS
helloSDK @1
mySum @2
myMax @3
平台属性设置
这里我分别配置了x86和x64的输出路径,设置为了../lib/x86和../lib/x64
(平台切换至x86 配置属性 – 常规 – 输出目录 填入 ../lib/x86)
(平台切换至x64 配置属性 – 常规 – 输出目录 填入 ../lib/x64)
生成库
平台处选择x86或者x64,然后在项目testSDK处右键 生成。
生成的库路径为: cpp-sdk\lib\x64\testSDK.dll
cpp-sdk\lib\x64\testSDK.lib
或者
cpp-sdk\lib\x86\testSDK.dll
cpp-sdk\lib\x86\testSDK.lib
后面测试工程的输出目录和添加库目录也对应设置到此,就不需要复制移动库了。
2 添加测试工程
新建工程,添加库文件和头文件。
在上面解决方案直接新建工程,来调用动态链接库。
在解决方案右键,添加 – 新建项目 – 同样选择win32 应用程序,工程名字为test吧,然后后面默认设置,确定。
将上面的testSDK.h、 testSDK.lib拷贝到该工程路径下,然后将头文件和库添加到工程。
头文件右键添加现有项,选择testSDK.h文件即可。
添加库文件,在test工程点下右键
- 平台设置,以平台切换x86平台
配置属性 – 常规 – 输出目录 填入 ..\lib\x86
配置属性 – 链接器 – 常规 – 附加库目录, 输入 ..\lib\x86
配置属性– 链接器 – 输入 – 附加依赖项, 输入 testSDK.lib - 平台设置,以平台切换x64平台
配置属性 – 常规 – 输出目录 填入 ..\lib\x64
配置属性 – 链接器 – 常规 – 附加库目录, 输入 ..\lib\x64
配置属性– 链接器 – 输入 – 附加依赖项, 输入 testSDK.lib
添加代码:
- stdafx.h 添加头文件:
// TODO: 在此处引用程序需要的其他头文件
#include <iostream>
#include "testSDK.h"
- test.cpp 调用库文件内部api:
// test.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
int main()
{
helloSDK();
std::cout << mySum(10, 12) << std::endl;
std::cout << myMax(1, 2, 4) << std::endl;
return 0;
}
编译运行
平台可以选择x86或者x64,按F5或者点击本地调试。
运行结果:
hello sdk
22
4
请按任意键继续. . .
结束
VS上面生成库并完成调用,附上测试代码