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上面生成库并完成调用,附上测试代码相关文章推荐
- C++ 通过jni生成库供JAVA调用(下)--C++生成库并JAVA可以调用(windows)
- java与C/C++之间通过jni相互调用
- 通过JNI实现Java和C++的相互调用(转)
- ubuntu下,C/C++通过JNI调用 JAVA类
- 通过JNI实现Java和C++的相互调用(转)
- 通过JNI实现Java和C++的相互调用(转)
- 通过JNI实现Java和C++的相互调用(转)
- 通过JNI实现Java和C++的相互调用(转)
- 通过JNI实现Java和C++的相互调用(转)
- 通过JNI实现Java和C++的相互调用
- 通过JNI 实现 java与C++之间的信息传递
- 通过JNI实现Java和C++的相互调用(转)
- 通过JNI实现Java和C++的相互调用(转)
- 通过JNI实现Java和C++的相互调用(转)
- 通过JNI实现Java和C++的相互调用(转)
- Java与C\C++之间通过JNI传递中文字符串
- 通过JNI实现Java和C++的相互调用(转)
- 通过JNI实现Java和C++的相互调用(转)
- 通过JNI实现Java和C++的相互调用(转)
- 通过JNI实现Java和C++的相互调用(转)