我有工作,修改用C写于2005年的旧的DLL ++。 我已经安装了Eclipse Oxygen,cygwin,gcc,gdb和make。无效参数C++ cygwin的
我已经搜索在很多地方,在我的项目属性做了很多的变化,但我的问题是在这里反正:我有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无效arguements' 考生:无效SetObjectArrayElement(_jobjectArray *, _jobject *)”
请提供错误的确切输出。在Eclipse中尝试“控制台”视图。 (例如,你有错误没有关联的行号等) –
在原岗位 – Calimero79
两个问号恰巧是'jsize'参数来完成。你有可能在其他地方重新定义'jsize'吗?新的编译器可能更容易违反一个定义规则。 – MSalters