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

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上面生成库并完成调用,附上测试代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值