在C++中用JNI进行方法调用?

 2023-01-21    284  

问题描述

所以我一直在调查JNI电话,以便我可以与一些书面的C ++程序进行互动,但我不知道任何C ++,但是正在尝试学习一些基础知识.我刚刚试图对我的JNI方法之外的方法进行简单的调用,但始终会出现以下错误:

错误c3861’myMethod’:找不到标识符

在C++中用JNI进行方法调用?

#include <stdio.h>
#include <string.h>
#include "StringFuncs.h"    

JNIEXPORT jstring JNICALL Java_StringFuncs_changeWord(JNIEnv *env, jobject obj, jstring inStr, jint inLen) 
{
    const char *inString;

    inString = env->GetStringUTFChars(inStr, NULL);


    char otherString[40];
    strcpy_s(otherString,inString);

    if(myMethod())
    {
        memset(otherString, '-', inLen);
    }

    jstring newString = env->NewStringUTF((const char*)otherString);
    return newString;
}

bool myMethod()
{
    return true;
}

int main()
{
    return 0;
}

任何wisdome的话?

推荐答案

您必须在调用方法之前声明您的方法.所以在您的标题类型中
bool myMethod();

或者您可以移动_changeword函数上方的代码,然后声明/定义是一个.

其他推荐答案

在源文件中移动myMethod()上方的java_stringfuncs_changeword().

其他推荐答案

在C ++中,您通常必须在使用它之前声明一个符号.因此,在Java_stringfuncs_changeword之前的某个地方您需要声明myMethod:

bool myMethod();

如果这将是共享函数(其他CPP模块会称呼它),那么您很可能希望将其放入可以由其他文件包含的标题文件中.如果该模块只能调用该函数,则要将声明放在文件的顶部,在其他#includes之后.

您还可以通过将整个函数移动到调用它的函数上方,而将整个函数移动到一个go中,但是这种函数始终不起作用(如果您有两个函数,则彼此参考,您必须具有单独的声明).

以上所述是小编给大家介绍的在C++中用JNI进行方法调用?,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/26234.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。