CライブラリからメソッドをプルするAndroidアプリを作成しています。Cライブラリで使用されるメソッドの1つは次のようになります...(val
関数として渡されたものへのポインタに従ってくださいsecond parameter
。)
BYTE __stdcall GetVal(WORD what, long *val){
DWORD relaydate;
BYTE tmpb;
DWORD tmpd;
WORD tmp;
#ifdef HASTHAILANDSWAP
WORD what2;
#endif
if(val) *val=0;
if(!CheckInit()) return ERR_NOT_INIT;
if(what==VAL_NULL){
if(RelayAPI_DataValid){
return 0;
}else{
return -1;
}
}
if(!CheckValid()) return ERR_READ_FAIL;
switch(what){
case VAL_SWVERSION:
*val=RelayAPI_SWVersion;
return 0;
case VAL_VOLTAGE:
*val=RelayAPI_Voltage;
return 0;
case VAL_VERSION:
*val=RelayAPI_Version;
return 0;
case VAL_ISSMUD:
*val=RelayAPI_isSMUD;
return 0;
}
ABYTE
はとして定義されますunsigned char
。GetVal
Java関数からそのメソッドを呼び出す必要があります。私のJavaコードの機能は、このCコードと一致する必要があります...
long val;
char buff[20];
if( !GetVal (VAL_SERIAL, &val) ) {}
そして、これは私のJavaコードでこれまでに持っているものです(これが正しくないことを知っています。Javaでそのような参照を使用できないことを知っています。私が持っているものを示しているだけです。):
public void updateForm() {
int val;
char buff[];
/**
* SERIAL NUMBER
*/
if( !GetVal( RelayAPIModel.VAL_SERIAL, &val ) ) { }
}
したがって、val
は次のように初期化されますnull
(私は、Cをあまりよく知らないと思います)、このlongへの参照は関数を介して渡されます。関数内で、へのポインタにval
値が割り当てられます。
NULL変数への参照が渡され、参照されている変数に値を割り当てるCのメソッドを使用する方法はありますか?
編集 :
明確にするために、上記のGetValメソッドを含むライブラリを使用しています。2番目のコードブロックの元となるPalmPilotAPIをミラーリングしています。3番目のコードブロックは、JavaからCライブラリのGetValメソッドへの呼び出しです。