gpt4 book ai didi

c++ - 无效参数 C++ cygwin

转载 作者:行者123 更新时间:2023-11-30 05:11:01 26 4
gpt4 key购买 nike

我的工作是修改 2005 年用 C++ 编写的旧 dll。我已经安装了 Eclipse Oxygen、带有 gcc、gdb 和 make 的 cygwin。

我在很多地方进行了搜索,对我的项目属性进行了很多更改,但无论如何我的问题都在这里:我有 5 个错误“Invalid Arguments”。

我的代码:

#include <jni.h>
#include "core_dll_ModDriver.h"
#include <stdio.h>
#include <iostream>

JNIEXPORT jobjectArray JNICALL Java_core_dll_ModDriver_EtatSupport(JNIEnv * env, jobject o)
{
const int nbFen = 4;
const char FAR* name = "EtatSupport";
char* fen1 = NULL;
char* fen2 = NULL;
char* fen3 = NULL;
char* fen4 = NULL;
loadDll();
if ( isDllLoaded() )
{
typedef unsigned char ( __stdcall * Function)( char*, char*, char*, char* );
Function function = (Function)getDllFunction( name );
if ( function != NULL )
{
char error = function ( fen1, fen2, fen3, fen4 );
}
else
std::cout << "echec" << name;
closeDll();
}
jobjectArray result = env->NewObjectArray( nbFen, env->FindClass("java/lang/String"), NULL );
jstring jfen1 = env->NewStringUTF( fen1 );
jstring jfen2 = env->NewStringUTF( fen2 );
jstring jfen3 = env->NewStringUTF( fen3 );
jstring jfen4 = env->NewStringUTF( fen4 );

env->SetObjectArrayElement( result, 0, jfen1 );
env->SetObjectArrayElement( result, 1, jfen2 );
env->SetObjectArrayElement( result, 2, jfen3 );
env->SetObjectArrayElement( result, 3, jfen4 );
return result;
}

我对 NewObjectArray 和所有 SetObjectArray 都有“无效参数”。

第 27 行无效参数'候选人是:_jobjectArray * NewObjectArray(?,_jclass *,_jobject *)'第 33、34、35、36 行无效的论点'候选人是:void SetObjectArrayElement(_jobjectArray *,?,_jobject *)'

最佳答案

首先要意识到的是,您遇到的“无效参数”错误来自 Eclipse 自己的代码分析,而不是来自编译器。它实际上不应该阻止您构建或运行代码,这只是一种烦恼。

已经确定,这个错误的原因通常是项目配置的问题,并且可能特定于平台、Java 版本等。(例如,我在 Linux 上的这段代码上没有得到这样的错误,使用 GCC 6 和 Java 8)。

正如@Msalters 已经在评论中指出的那样,错误似乎是由 Eclipse 无法解析类型 jsize 引起的。为了研究这个,我会打开标题jni.h(你可以通过#include 上的“Open Declaration”为它做),找到jsize 的定义,并查看是否有任何可能表明它无法解决的原因。要纠正该问题,您可能需要调整项目配置,例如指定额外的包含路径或定义额外的宏。

关于c++ - 无效参数 C++ cygwin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45326674/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com