无效参数 C++ cygwin
Invalid Arguments C++ cygwin
我必须修改2005年用c ++编写的旧dll。 我已经安装了Eclipse Oxygen,cygwin与gcc,gdb和make。
我已经在很多地方搜索过,对我的项目属性进行了许多更改,但我的问题无论如何都在这里:我有 5 个错误"无效参数"。
我的代码 :
#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 上的"开放声明"来完成(,找到jsize
的定义,看看是否有任何可能表明为什么它没有解决。若要纠正此问题,可能需要对项目配置进行调整,例如指定其他包含路径或定义其他宏。
相关文章:
- Windows/Cygwin - 不能使用 pybind11 - 犯错误
- 在cygwin中运行c++脚本时发生错误
- 在cygwin中测试新的boost安装时出现cpp错误
- 如何配置Visual Studio Code以使用cygwin,cmake和gcc进行调试
- Cygwin下的gcc 9.3.0预处理器:cmdline -Dname,但名称似乎未定义
- 使用 NVIDIA GPU 在 Cygwin 中链接 OpenCL 库时遇到问题
- 在Cygwin上链接Boost库
- NetBean 和 Cygwin 的 C++ 编译错误?
- 如何从Cygwin下构建的C++程序链接到DLL
- 使用Cygwin C++时出现未定义的引用错误,为什么我的文件没有链接?
- 调用C#中的Cygwin GCC DLL挂在malloc上
- MinGW在Cygwin上.关于链接GNU科学图书馆的一些问题
- 如何在没有Cygwin或Visual Studio的情况下编译Magick++?
- 如何从.NET Core调用cygwin编译的C++
- fork() 无法使用 Cygwin
- 无效参数 C++ cygwin
- 60603 (Fedora Cygwin 5.4.0-2) when using std::cout
- 为什么我不能编译这个在Cygwin的Visual Studio中编写的C++文件?
- FingerJetFXOSE Cygwin 编译错误
- Cygwin pkg-config/protobuf filepath issues