您的位置:首页 > 编程语言 > C语言/C++

C++ 通过jni生成库供JAVA调用(上) (C++之间的调用)

2017-08-26 18:41 429 查看

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 &l
4000
t; 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上面生成库并完成调用,附上测试代码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: