Ich habe für die Arbeit eine alte DLL in 2005 geschrieben in C++ zu ändern. Ich habe Eclipse Oxygen, Cygwin mit gcc, gdb und make installiert.Ungültige Argumente C++ Cygwin
Ich habe an vielen Stellen gesucht, viele Änderungen in meinen Projekteigenschaften vorgenommen, aber mein Problem ist hier trotzdem: Ich habe 5 Fehler "Ungültige Argumente".
mein Code:
#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;
}
Und ich habe "Ungültige Argumente" mit NewObjectArray und alle SetObjectArray.
Zeile 27 Ungültige Argumente Kandidaten sind: _jobjectArray * NewObjectArray (, _ JClass * _ jobject *?)‘ Linie 33,34,35,36 Ungültige arguements' Kandidaten sind: Leere SetObjectArrayElement (_jobjectArray *, _jobject *) '
Bitte geben Sie die genaue Ausgabe des Fehlers an. Versuchen Sie die Ansicht "Konsole" in Eclipse. (Sie haben z. B. keine verknüpfte Zeilennummer der Fehler usw.) –
im ursprünglichen Beitrag – Calimero79
Die zwei Fragezeichen geschehen für 'jsize' Argumente. Gibt es eine Chance, dass du 'jsize' anderswo neu definierst? Neue Compiler sind möglicherweise anfälliger für Verstöße gegen die Eine-Definition-Regel. – MSalters