c++常见函数封装

c++常见函数封装库
RDCPP.h

#ifndef RDCPP_H
#define RDCPP_H
#include<bits/stdc++.h>//依赖c++11标准头文件库
bool pri(int n) {//素数
	if(n<2) return false;
	for(int i=2; i*i<=n; i++) {
		if(n%i==0) return false;
	}
	return true;
}
int sum(int n) {//阶乘
	return n==1?1:sum(n-1)*n;
}
int rev(int a,int od) {//颠倒数
	int n=a,m=0;
	while(n!=0) {
		m=m*10+n%10+od;
		n/=10;
	}
	return m;
}
int addb(int a,int k,int p) {//进制转换
	int n=a,m=0,t=1,bt=0;
	if(k!=10) {
		while(n!=0) {
			m+=n%10*t;
			n/=10;
			t*=k;
		}
		n=m;
		m=0;
	}
	t=0;
	if(p!=10) {
		while(n!=0) {
			m=m*10+n%p;
			n/=p;
			t++;
		}
		m=rev(m,0);
		t--;
		bt=m;
		while(t>0){
			if(bt<10) m*=10;
			else bt=bt/10;
			t--;
		}
	} else {
		m=n;
	}
	return m;
}
int gys(int a, int b) {//最大公因数
	int t;
	if(a<b) swap(a,b);
	while (b!=0) {
		t=a%b;
		a=b;
		b=t;
	}
	return a;
}
int gbs (int a, int b) {//最小公倍数
	return a*b/gys(a,b);
}
#endif
C++函数封装成 JNI 接口并在 Java 中调用的完成流程如下: 1.编写 C++ 函数,实现想要的功能。 2.通过 JNI 定义该函数的接口,也就是用 JNI 的语法来描述该函数的输入和输出参数。 3.在 JNI 接口中将 C++ 函数名和接口绑定起来,使其成为一个名为“本地方法”的 JNI 函数。这一步通常需要在一个特定的函数中使用 RegisterNatives() 函数进行注册。 4.将编写好的 JNI 接口动态链接到 Java 虚拟机中。这一步可以通过在 Java 中使用 System.loadLibrary 或 System.load 方法来完成。 5.在 Java 中通过 JNI 接口调用 C++ 函数。 具体流程如下: 1.编写 C++ 函数,例如: ```C++ #include <iostream> #include <jni.h> using namespace std; JNIEXPORT void JNICALL Java_MyClass_PrintHello(JNIEnv *env, jobject obj) { cout << "Hello, World!" << endl; } ``` 2.通过 JNI 定义该函数的接口,例如: ```C++ JNIEXPORT void JNICALL Java_MyClass_PrintHello(JNIEnv *env, jobject obj); ``` 3.在 JNI 接口中将 C++ 函数名和接口绑定起来,例如: ```C++ static const JNINativeMethod methods[] = { {"PrintHello", "()V", (void*)Java_MyClass_PrintHello}, }; jint JNI_OnLoad(JavaVM* vm, void* reserved) { JNIEnv* env; if (vm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_6) != JNI_OK) { return JNI_ERR; } jclass clazz = env->FindClass("MyClass"); env->RegisterNatives(clazz, methods, sizeof(methods) / sizeof(methods[0])); return JNI_VERSION_1_6; } ``` 4.将编写好的 JNI 接口动态链接到 Java 虚拟机中,例如: ```Java public class MyClass { static { System.loadLibrary("MyLibrary"); } public static native void PrintHello(); } ``` 5.在 Java 中通过 JNI 接口调用 C++ 函数,例如: ```Java public class Main { public static void main(String[] args) { MyClass.PrintHello(); } } ``` 这样,当 Java 调用 MyClass.PrintHello() 方法时,就会通过 JNI 调用 C++ 函数,输出 "Hello, World!"。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值