長年システム開発を行っているが、毎回ちょっとしたことでいろいろなトラブルに出会う。
その対策について、忘備録としてこのブログを使用しようと思う。
この忘備録が同様の開発者たちに少しでも役立てばと思う。
■ 今回のトラブル
以前開発したAndroidアプリを新しい環境(adt-bundle-windows-x86-20130219.zip)にて再構築を行った際、JNIで開発したCソースが突然ビルドエラーとなった。
何が悪いのだ? ・・ とにかく悩む。
慣れないWindows版を使用したからか?
慣れた環境(Ubuntu12.04 32bit版)でも同様の環境を構築してみたが、同じくSemantic Errorが発生しビルドできない。
■ ソースファイル
#include <stdlib.h>
#include "com_maxport_memtest_memtest01.h"
JNIEXPORT jboolean JNICALL Java_com_maxport_memtest_funcmemtest( JNIEnv *env, jobject obj )
{
pByteDat = ( char * )malloc( 100 );
return( true );
}
mallocにSemantic Error発生!
何がどう違うのかさっぱりわからない状態で時間だけが経過していった。
※ malloc、memset、read、writeなどに同様のエラーが発生している。
■ 対策
結局はEclipseのビルド環境設定を見直しただけで解決できた。
プロパティ → C/C++ General → Code Analysis
ここで Invalid arguments のエラーチェックを外せばよい。
※ こちら日本語化していないので、 日本語化した場合の表示内容は不明。
Invalid argumentsのチェックを外す。
ビルドエラーはなくなり、無事にビルド完了!
以前の環境(2012年9月あたりにUbuntu12.04上で構築した環境)では問題なかったので、新しい環境でこうなってしまったのだろう。
OSや開発環境のバージョンアップにいつも振り回されてばかりだ ・・・
0 件のコメント:
コメントを投稿