[kepler-dev] Warnings while compiling matlab under 32bit windows
Christopher Brooks
cxh at eecs.berkeley.edu
Mon May 3 21:54:49 PDT 2010
Hi Daniel,
I get warnings when I compile ptmatlab.cc under 32 bit windows.
Also, I'm having problems running the Matlab interface under Ptolemy under
32 bit Windows. When I run $PTII/ptolemy/matlab/demo/MatlabExpression/MatlabExpression.xml
from Eclipse, I get to preinitialize and the the process hangs.
A similar setup from January, 2009 works ok. I'm not sure where the problem
is yet.
Below are the warnings. I think we need to use ifdefs here instead of
casting everything to jlong.
_Christopher
> ptmatlab.cc: In function `jlong Java_ptolemy_matlab_Engine_ptmatlabEngOpen(JNIEn
> v*, _jobject*, _jstring*)':
> ptmatlab.cc:136: warning: cast from pointer to integer of different size
> ptmatlab.cc: In function `jint Java_ptolemy_matlab_Engine_ptmatlabEngClose(JNIEn
> v*, _jobject*, jlong, jlong)':
> ptmatlab.cc:151: warning: cast to pointer from integer of different size
> ptmatlab.cc:152: warning: cast to pointer from integer of different size
> ptmatlab.cc: In function `jint Java_ptolemy_matlab_Engine_ptmatlabEngEvalString(
> JNIEnv*, _jobject*, jlong, _jstring*)':
> ptmatlab.cc:181: warning: cast to pointer from integer of different size
> ptmatlab.cc: In function `jlong Java_ptolemy_matlab_Engine_ptmatlabEngGetArray(J
> NIEnv*, _jobject*, jlong, _jstring*)':
> ptmatlab.cc:194: warning: cast to pointer from integer of different size
> ptmatlab.cc:207: warning: cast from pointer to integer of different size
> ptmatlab.cc: In function `jint Java_ptolemy_matlab_Engine_ptmatlabEngPutArray(JN
> IEnv*, _jobject*, jlong, _jstring*, jlong)':
> ptmatlab.cc:218: warning: cast to pointer from integer of different size
> ptmatlab.cc:220: warning: cast to pointer from integer of different size
> ptmatlab.cc: In function `jlong Java_ptolemy_matlab_Engine_ptmatlabEngOutputBuff
> er(JNIEnv*, _jobject*, jlong, jint)':
> ptmatlab.cc:241: warning: cast to pointer from integer of different size
> ptmatlab.cc:252: warning: cast from pointer to integer of different size
> ptmatlab.cc: In function `jlong Java_ptolemy_matlab_Engine_ptmatlabCreateCellMat
> rix(JNIEnv*, _jobject*, _jstring*, jint, jint)':
> ptmatlab.cc:270: warning: cast from pointer to integer of different size
> ptmatlab.cc: In function `jlong Java_ptolemy_matlab_Engine_ptmatlabCreateString(
> JNIEnv*, _jobject*, _jstring*, _jstring*, jint, jint)':
> ptmatlab.cc:300: warning: cast from pointer to integer of different size
> ptmatlab.cc: In function `jlong Java_ptolemy_matlab_Engine_ptmatlabCreateDoubleM
> atrixOneDim(JNIEnv*, _jobject*, _jstring*, _jdoubleArray*, jint)':
> ptmatlab.cc:322: warning: cast from pointer to integer of different size
> ptmatlab.cc: In function `jlong Java_ptolemy_matlab_Engine_ptmatlabCreateDoubleM
> atrix(JNIEnv*, _jobject*, _jstring*, _jobjectArray*, jint, jint)':
> ptmatlab.cc:354: warning: cast from pointer to integer of different size
> ptmatlab.cc: In function `jlong Java_ptolemy_matlab_Engine_ptmatlabCreateComplex
> MatrixOneDim(JNIEnv*, _jobject*, _jstring*, _jobjectArray*, jint)':
> ptmatlab.cc:387: warning: cast from pointer to integer of different size
> ptmatlab.cc: In function `jlong Java_ptolemy_matlab_Engine_ptmatlabCreateComplex
> cxh at newton ~/ptII/ptolemy/matlabing*, _jobjectArray*, jint, jint)':
> $ matlab.cc:425: warning: cast from pointer to integer of different size
> ptmatlab.cc: In function `jlong Java_ptolemy_matlab_Engine_ptmatlabCreateStructM
> atrix(JNIEnv*, _jobject*, _jstring*, _jobjectArray*, jint, jint)':
> ptmatlab.cc:458: warning: cast from pointer to integer of different size
> ptmatlab.cc: In function `void Java_ptolemy_matlab_Engine_ptmatlabDestroy(JNIEnv
> *, _jobject*, jlong, _jstring*)':
> ptmatlab.cc:468: warning: cast to pointer from integer of different size
> ptmatlab.cc: In function `jlong Java_ptolemy_matlab_Engine_ptmatlabGetCell(JNIEn
> v*, _jobject*, jlong, jint, jint)':
> ptmatlab.cc:485: warning: cast to pointer from integer of different size
> ptmatlab.cc:493: warning: cast from pointer to integer of different size
> ptmatlab.cc: In function `_jstring* Java_ptolemy_matlab_Engine_ptmatlabGetClassN
> ame(JNIEnv*, _jobject*, jlong)':
> ptmatlab.cc:503: warning: cast to pointer from integer of different size
> ptmatlab.cc: In function `_jintArray* Java_ptolemy_matlab_Engine_ptmatlabGetDime
> nsions(JNIEnv*, _jobject*, jlong)':
> ptmatlab.cc:516: warning: cast to pointer from integer of different size
> ptmatlab.cc: In function `_jstring* Java_ptolemy_matlab_Engine_ptmatlabGetFieldN
> ameByNumber(JNIEnv*, _jobject*, jlong, jint)':
> ptmatlab.cc:538: warning: cast to pointer from integer of different size
> ptmatlab.cc: In function `jlong Java_ptolemy_matlab_Engine_ptmatlabGetFieldByNum
> ber(JNIEnv*, _jobject*, jlong, jint, jint, jint)':
> ptmatlab.cc:553: warning: cast to pointer from integer of different size
> ptmatlab.cc:561: warning: cast from pointer to integer of different size
> ptmatlab.cc: In function `jint Java_ptolemy_matlab_Engine_ptmatlabGetNumberOfFie
> lds(JNIEnv*, _jobject*, jlong)':
> ptmatlab.cc:570: warning: cast to pointer from integer of different size
> ptmatlab.cc: In function `_jstring* Java_ptolemy_matlab_Engine_ptmatlabGetString
> (JNIEnv*, _jobject*, jlong, jint)':
> ptmatlab.cc:582: warning: cast to pointer from integer of different size
> ptmatlab.cc: In function `_jstring* Java_ptolemy_matlab_Engine_ptmatlabGetOutput
> (JNIEnv*, _jobject*, jlong, jint)':
> ptmatlab.cc:607: warning: cast to pointer from integer of different size
> ptmatlab.cc: In function `jboolean Java_ptolemy_matlab_Engine_ptmatlabIsComplex(
> JNIEnv*, _jobject*, jlong)':
> ptmatlab.cc:619: warning: cast to pointer from integer of different size
> ptmatlab.cc: In function `_jobjectArray* Java_ptolemy_matlab_Engine_ptmatlabGetD
> oubleMatrix(JNIEnv*, _jobject*, jlong, jint, jint)':
> ptmatlab.cc:636: warning: cast to pointer from integer of different size
> ptmatlab.cc: In function `_jobjectArray* Java_ptolemy_matlab_Engine_ptmatlabGetC
> omplexMatrix(JNIEnv*, _jobject*, jlong, jint, jint)':
> ptmatlab.cc:666: warning: cast to pointer from integer of different size
> ptmatlab.cc: In function `_jobjectArray* Java_ptolemy_matlab_Engine_ptmatlabGetL
> ogicalMatrix(JNIEnv*, _jobject*, jlong, jint, jint)':
> ptmatlab.cc:705: warning: cast to pointer from integer of different size
> ptmatlab.cc: In function `void Java_ptolemy_matlab_Engine_ptmatlabSetString(JNIE
> nv*, _jobject*, _jstring*, jlong, jint, _jstring*, jint)':
> ptmatlab.cc:739: warning: cast to pointer from integer of different size
> ptmatlab.cc: In function `void Java_ptolemy_matlab_Engine_ptmatlabSetStructField
> (JNIEnv*, _jobject*, _jstring*, jlong, _jstring*, jint, jint, jlong)':
> ptmatlab.cc:766: warning: cast to pointer from integer of different size
> ptmatlab.cc:767: warning: cast to pointer from integer of different size
> ptmatlab.cc: In function `void Java_ptolemy_matlab_Engine_ptmatlabSetCell(JNIEnv
> *, _jobject*, _jstring*, jlong, jint, jint, jlong)':
> ptmatlab.cc:793: warning: cast to pointer from integer of different size
> ptmatlab.cc:794: warning: cast to pointer from integer of different size
On 4/29/10 1:45 PM, Daniel Crawl wrote:
> Author: crawl
> Date: 2010-04-29 13:45:15 -0700 (Thu, 29 Apr 2010)
> New Revision: 57729
>
> Modified:
> branches/rel-8-0-beta-2/ptolemy/matlab/ptmatlab.cc
> Log:
> Bug fixes for 64 bit Mac and Windows: removing double casts and changing
> all ptrlong to jlong.
>
>
> Modified: branches/rel-8-0-beta-2/ptolemy/matlab/ptmatlab.cc
> ===================================================================
> --- branches/rel-8-0-beta-2/ptolemy/matlab/ptmatlab.cc 2010-04-29 20:13:17 UTC (rev 57728)
> +++ branches/rel-8-0-beta-2/ptolemy/matlab/ptmatlab.cc 2010-04-29 20:45:15 UTC (rev 57729)
> @@ -102,9 +102,6 @@
> #define mxGetLogicals(ma) mxGetPr(ma)
> #endif
>
> -// Declare an integer type that correctly casts a long
> -typedef long ptrlong;
> -
> #include<stdio.h>
> #include<stdlib.h>
>
> @@ -132,7 +129,7 @@
> if (cmdString != NULL) cmd = jni->GetStringUTFChars(cmdString, 0);
> Engine *ep = engOpen(cmd);
> if (ep != NULL) {
> - retval = (ptrlong)ep;
> + retval = (jlong)ep;
> }
> else {
> printf("ptmatlabEngOpen: %s failed!\n", cmd==NULL?"":cmd); fflush(stdout);
> @@ -147,8 +144,8 @@
> jlong e,
> jlong p)
> {
> - Engine *ep = (Engine*)(ptrlong)e;
> - char* output_buf = (char*)(int)p;
> + Engine *ep = (Engine*)e;
> + char* output_buf = (char*)p;
> const char debug = ptmatlabGetDebug(jni,obj);
> if (debug> 1) {
> printf("ptmatlabEngClose: calling engClose(%d)\n", ep); fflush(stdout);
> @@ -170,7 +167,7 @@
> jlong e,
> jstring evalStr)
> {
> - Engine *ep = (Engine*)(ptrlong)e;
> + Engine *ep = (Engine*)e;
> const char *str = jni->GetStringUTFChars(evalStr, 0);
> int retval = engEvalString(ep, str);
> jni->ReleaseStringUTFChars(evalStr, str);
> @@ -183,7 +180,7 @@
> jlong e,
> jstring name)
> {
> - Engine *ep = (Engine*)(ptrlong) e;
> + Engine *ep = (Engine*) e;
> char debug = ptmatlabGetDebug(jni,obj);
> const char *str = jni->GetStringUTFChars(name, 0);
> #ifdef PT_NO_ENGGETARRAY
> @@ -196,7 +193,7 @@
> printf("ptmatlabEngGetArray(%s) %d x %d\n", str, dimArray[0], dimArray[1]);
> }
> jni->ReleaseStringUTFChars(name, str);
> - return (ptrlong) ma;
> + return (jlong) ma;
> }
>
> JNIEXPORT jint JNICALL Java_ptolemy_matlab_Engine_ptmatlabEngPutArray
> @@ -207,9 +204,9 @@
> jlong pma)
> {
> char debug = ptmatlabGetDebug(jni,obj);
> - Engine *ep = (Engine*)(ptrlong) e;
> + Engine *ep = (Engine*) e;
> const char *str = jni->GetStringUTFChars(name, 0);
> - mxArray *ma = (mxArray*)(ptrlong)pma;
> + mxArray *ma = (mxArray*)pma;
> #ifdef PT_NO_ENGPUTARRAY
> // Daniel Crawl says to use engPutVariable(), see
> // http://www.mathworks.com/access/helpdesk/help/techdoc/index.html?/access/helpdesk/help/techdoc/rn/f34-998197.html
> @@ -230,7 +227,7 @@
> jlong e,
> jint n)
> {
> - Engine *ep = (Engine*)(ptrlong) e;
> + Engine *ep = (Engine*) e;
> char debug = ptmatlabGetDebug(jni,obj);
> char *p = (char*)calloc(n+1,sizeof(char));
> if (p == NULL) {
> @@ -241,7 +238,7 @@
> printf("ptmatlabEngOutputBuffer: set, engine=%d, p=0x%x, n=%d\n", ep, p, n); fflush(stdout);
> }
> engOutputBuffer(ep, p, n);
> - return (ptrlong)p;
> + return (jlong)p;
> }
>
> JNIEXPORT jlong JNICALL Java_ptolemy_matlab_Engine_ptmatlabCreateCellMatrix
> @@ -259,7 +256,7 @@
> printf("ptmatlabCreateCellMatrix(%s) %d x %d\n", nstr, n, m);
> jni->ReleaseStringUTFChars(name, nstr);
> }
> - return (ptrlong) ma;
> + return (jlong) ma;
> }
>
> JNIEXPORT jlong JNICALL Java_ptolemy_matlab_Engine_ptmatlabCreateString
> @@ -289,7 +286,7 @@
> }
> }
> jni->ReleaseStringUTFChars(s, str);
> - return (ptrlong) ma;
> + return (jlong) ma;
> }
>
> JNIEXPORT jlong JNICALL Java_ptolemy_matlab_Engine_ptmatlabCreateDoubleMatrixOneDim
> @@ -311,7 +308,7 @@
> }
>
> jni->GetDoubleArrayRegion(a, 0, length, pr);
> - return (ptrlong) ma;
> + return (jlong) ma;
> }
>
> JNIEXPORT jlong JNICALL Java_ptolemy_matlab_Engine_ptmatlabCreateDoubleMatrix
> @@ -343,7 +340,7 @@
> jni->ReleasePrimitiveArrayCritical(row, rowelements, 0);
> jni->DeleteLocalRef(row); // free references
> }
> - return (ptrlong) ma;
> + return (jlong) ma;
> }
>
> JNIEXPORT jlong JNICALL Java_ptolemy_matlab_Engine_ptmatlabCreateComplexMatrixOneDim
> @@ -376,7 +373,7 @@
> *(pi+j) = jni->GetDoubleField(element, complexImagFieldID);
> jni->DeleteLocalRef(element);
> }
> - return (ptrlong) ma;
> + return (jlong) ma;
> }
>
> JNIEXPORT jlong JNICALL Java_ptolemy_matlab_Engine_ptmatlabCreateComplexMatrix
> @@ -414,7 +411,7 @@
> }
> jni->DeleteLocalRef(jcolumn);
> }
> - return (ptrlong) ma;
> + return (jlong) ma;
> }
>
> JNIEXPORT jlong JNICALL Java_ptolemy_matlab_Engine_ptmatlabCreateStructMatrix
> @@ -447,7 +444,7 @@
> jni->ReleaseStringUTFChars((jstring)jni->GetObjectArrayElement(fieldNames,i),names[i]);
> }
> free(names);
> - return (ptrlong) ma;
> + return (jlong) ma;
> }
>
> JNIEXPORT void JNICALL Java_ptolemy_matlab_Engine_ptmatlabDestroy
> @@ -457,7 +454,7 @@
> jstring name)
> {
> char debug = ptmatlabGetDebug(jni,obj);
> - mxArray *ma = (mxArray*)(ptrlong) pma;
> + mxArray *ma = (mxArray*) pma;
> if (debug> 1) {
> const char *str = jni->GetStringUTFChars(name, 0);
> printf("ptmatlabDestroy(%s)\n", str); fflush(stdout);
> @@ -474,7 +471,7 @@
> jint m)
> {
> char debug = ptmatlabGetDebug(jni,obj);
> - mxArray *ma = (mxArray*)(ptrlong) pma;
> + mxArray *ma = (mxArray*) pma;
> int subs[] = {n, m};
> int index = mxCalcSingleSubscript(ma, 2, subs);
> mxArray *fma = mxGetCell(ma, index);
> @@ -482,7 +479,7 @@
> const int *dimArray = mxGetDimensions(fma);
> printf("ptmatlabGetCell(%s,%d,%d) %d x %d\n", mxGetName(ma), n, m, dimArray[0], dimArray[1]);
> }
> - return (ptrlong) fma;
> + return (jlong) fma;
> }
>
> JNIEXPORT jstring JNICALL Java_ptolemy_matlab_Engine_ptmatlabGetClassName
> @@ -492,7 +489,7 @@
> {
> char debug = ptmatlabGetDebug(jni,obj);
>
> - mxArray *ma = (mxArray*)(ptrlong) pma;
> + mxArray *ma = (mxArray*) pma;
> const char *classNameStr = mxGetClassName(ma);
> if (debug> 1) printf("ptmatlabGetClassName(%s) = %s\n", mxGetName(ma), classNameStr);
> return jni->NewStringUTF(classNameStr);
> @@ -505,7 +502,7 @@
> {
> char debug = ptmatlabGetDebug(jni,obj);
>
> - mxArray *ma = (mxArray*)(ptrlong) pma;
> + mxArray *ma = (mxArray*) pma;
> jint ndims = mxGetNumberOfDimensions(ma);
> const int *dims = mxGetDimensions(ma);
> // MSVC can't deal with variable length arrays
> @@ -527,7 +524,7 @@
> jint k)
> {
> char debug = ptmatlabGetDebug(jni,obj);
> - mxArray *ma = (mxArray*)(ptrlong) pma;
> + mxArray *ma = (mxArray*) pma;
> const char* fieldNameStr = mxGetFieldNameByNumber(ma, k);
> if (debug> 1) printf("ptmatlabGetFieldNameByNumber(%s,%d) = %s\n",mxGetName(ma), k, fieldNameStr);
> return jni->NewStringUTF(fieldNameStr);
> @@ -542,7 +539,7 @@
> jint m)
> {
> char debug = ptmatlabGetDebug(jni,obj);
> - mxArray *ma = (mxArray*)(ptrlong) pma;
> + mxArray *ma = (mxArray*) pma;
> int subs[] = {n, m};
> int index = mxCalcSingleSubscript(ma, 2, subs);
> mxArray *fma = mxGetFieldByNumber(ma, index, k);
> @@ -550,7 +547,7 @@
> const int *dimArray = mxGetDimensions(fma);
> printf("ptmatlabGetFieldByNumber(%s,%d,%d,%d) %d x %d\n", mxGetName(ma), k, n, m, dimArray[0], dimArray[1]);
> }
> - return (ptrlong) fma;
> + return (jlong) fma;
> }
>
> JNIEXPORT jint JNICALL Java_ptolemy_matlab_Engine_ptmatlabGetNumberOfFields
> @@ -559,7 +556,7 @@
> jlong pma)
> {
> char debug = ptmatlabGetDebug(jni,obj);
> - mxArray *ma = (mxArray*)(ptrlong) pma;
> + mxArray *ma = (mxArray*) pma;
> if (debug> 1) printf("ptmatlabGetNumberOfFields(%s) = %d\n",mxGetName(ma), mxGetNumberOfFields(ma));
> return (jint) mxGetNumberOfFields(ma);
> }
> @@ -571,7 +568,7 @@
> jint n)
> {
> char debug = ptmatlabGetDebug(jni,obj);
> - mxArray *ma = (mxArray*)(ptrlong) pma;
> + mxArray *ma = (mxArray*) pma;
> const int *dims = mxGetDimensions(ma);
> int strlen = dims[1];
> int nrows = dims[0];
> @@ -596,7 +593,7 @@
> jint n)
> {
> char debug = ptmatlabGetDebug(jni,obj);
> - char *p = (char*)(ptrlong)jp;
> + char *p = (char*)jp;
> if (debug> 1) printf("ptmatlabGetOutput(%d) = %s\n", n, p);
> jstring retval = jni->NewStringUTF(p);
> return retval;
> @@ -608,7 +605,7 @@
> jobject obj,
> jlong pma)
> {
> - mxArray *ma = (mxArray*)(ptrlong) pma;
> + mxArray *ma = (mxArray*) pma;
>
> char debug = ptmatlabGetDebug(jni,obj);
> if (debug> 1) printf("ptmatlabIsComplex(%s) = %d\n",mxGetName(ma), mxIsComplex(ma));
> @@ -625,7 +622,7 @@
> {
> char debug = ptmatlabGetDebug(jni,obj);
>
> - mxArray *ma = (mxArray*)(ptrlong) pma;
> + mxArray *ma = (mxArray*) pma;
> jdouble *pr = (jdouble*) mxGetPr(ma); // Cast assumes jdouble is double
>
> if (debug> 1) printf("ptmatlabGetDoubleMatrix(%s) %d x %d\n",mxGetName(ma), n, m);
> @@ -655,7 +652,7 @@
> {
> char debug = ptmatlabGetDebug(jni,obj);
>
> - mxArray *ma = (mxArray*)(ptrlong) pma;
> + mxArray *ma = (mxArray*) pma;
> jdouble *pr = (jdouble*) mxGetPr(ma); // Cast assumes jdouble is double
> jdouble *pi = (jdouble*) mxGetPi(ma);
>
> @@ -694,7 +691,7 @@
> {
> char debug = ptmatlabGetDebug(jni,obj);
>
> - mxArray *ma = (mxArray*)(ptrlong) pma;
> + mxArray *ma = (mxArray*) pma;
> mxLogical *pr = (mxLogical*) mxGetLogicals(ma);
>
> if (debug> 1) printf("ptmatlabGetLogicalMatrix(%s) %d x %d\n",mxGetName(ma), n, m);
> @@ -728,7 +725,7 @@
> {
> char debug = ptmatlabGetDebug(jni,obj);
> char *str = (char*) jni->GetStringUTFChars(s, 0);
> - mxArray *ma = (mxArray *)(ptrlong)pma;
> + mxArray *ma = (mxArray *)pma;
> mxChar *d = (mxChar*)mxGetData(ma);
> const int *dims = mxGetDimensions(ma);
> int nrows = dims[0];
> @@ -755,8 +752,8 @@
> {
> char debug = ptmatlabGetDebug(jni,obj);
>
> - mxArray *structMa = (mxArray *)(ptrlong) sma;
> - mxArray *fieldMa = (mxArray *)(ptrlong) fma;
> + mxArray *structMa = (mxArray *) sma;
> + mxArray *fieldMa = (mxArray *) fma;
> int subs[] = {n, m};
> int index = mxCalcSingleSubscript(structMa, 2, subs);
> const char *str = jni->GetStringUTFChars(fieldName, 0);
> @@ -782,8 +779,8 @@
> {
> char debug = ptmatlabGetDebug(jni,obj);
>
> - mxArray *cellArray = (mxArray *)(ptrlong)sma;
> - mxArray *cell = (mxArray *)(ptrlong)fma;
> + mxArray *cellArray = (mxArray *)sma;
> + mxArray *cell = (mxArray *)fma;
> int subs[] = {n, m};
> int index = mxCalcSingleSubscript(cellArray, 2, subs);
> mxSetCell(cellArray, index, cell);
>
> _______________________________________________
> Ptexternal-cvs mailing list
> Ptexternal-cvs at chess.eecs.berkeley.edu
> http://chess.eecs.berkeley.edu/ptexternal/listinfo/ptexternal-cvs
--
Christopher Brooks, PMP University of California
CHESS Executive Director US Mail: 337 Cory Hall
Programmer/Analyst CHESS/Ptolemy/Trust Berkeley, CA 94720-1774
ph: 510.643.9841 fax:510.642.2718 (Office: 545Q Cory)
home: (F-Tu) 707.665.0131 cell: 707.332.0670
More information about the Kepler-dev
mailing list