ホーム » 2013 (ページ 2)

年別アーカイブ: 2013

2024年5月
 1234
567891011
12131415161718
19202122232425
262728293031  

カテゴリー

アーカイブ

ブログ統計情報

  • 81,703 アクセス


C++ System::Xml::XmlReader

Visual C++ を使用して、ファイルから XML データを読み取る
Netting C++ XML による構成
XmlNode メンバ
  XmlNode.Attributes プロパティ
  XmlNode.ChildNodes プロパティ


System::Xml を利用した読込のコードを作成していて,テスト用のコードで
—— ビルド開始: プロジェクト: L_xml_I, 構成: Debug Win32 ——
コンパイルしています…
L_xml_I.cpp
.\L_xml_I.cpp(182) : error C2039: ‘GetTempPathW’ : ‘System::IO::Path’ のメンバではありません。
c:\windows\microsoft.net\framework\v2.0.50727\mscorlib.dll : ‘System::IO::Path’ の宣言を確認してください。
.\L_xml_I.cpp(182) : error C2660: ‘GetTempPathW’ : 関数に 0 個の引数を指定できません。
L_xml_I – エラー 2、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ==========
  Windows.h をインクルードしてはいけない?
  使用する前?に以下を追加.
    #undef GetTempPath


2020/07 https://jml.mish.work/index.php/cpp/xml.html


2019/01 C++ と STL の範囲で書き直し
リンク先に msxml.dll などを使用しない C++ で書いたコードを置いています.


2019/08 System.Xml.dll と msxml.dll を使用したコードへのリンクを追加
xml_base.hxx
Str_CLI.hxx
Xml_CLI.hxx
Xml_MS_.hxx
Xml_In.hxx

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

tlbimp

今度は「COM 相互運用機能」ってやつ.
Tlbimp.exe を利用して,AsFile.tlb を ISFile.dll として出力.
  SDK コマンドプロンプトを開き,~\ReleaseU のフォルダに移動.
  tlbimp AsFile.tlb ISFile.dll
C# フォームアプリケーションを作成して,ボタンを配置.
  参照の追加で,iSFile.dll を追加.
    using iSFile; を追加.
    private void button1_Click(object sender,EventArgs e) {
      iSFile.SearchF srchF = new iSFile.SearchF() ;
      string selFile = srchF.BrowseFile(“%Temp%\\”,””) ;
      MessageBox.Show(selFile) ;
      }
同様の動作の vbs での呼び出しは,
  dim oFSch : set oFSch = CreateObject(“AsFile.SearchF”)
  selFile = oFSch.BrowseFile(“%Temp%\”,””) ;
  MsgBox x
以前聞いた時には,もっと面倒なイメージがあったがそれ程でもない.
  ただ COM の部分が確定していない(平行してコードを書いている)時は面倒なのかも.


同様に AsHVR.exe をやってみたら,実行時エラー.
型 ‘AsHVR.AsHVRClass’ の COM オブジェクトをインターフェイス型 ‘AsHVR.IAsHVR’ にキャストできません。
IID ‘{1625D8E7-B67B-4592-878F-ECFAD1227734}’ が指定されたインターフェイスの COM コンポーネント上での QueryInterface 呼び出しのときに次のエラーが発生したため、この操作に失敗しました:
インターフェイスがサポートされていません (HRESULT からの例外: 0x80004002 (E_NOINTERFACE))。
0x80004002 (E_NOINTERFACE)
これが面倒だったのかも?


他にも,T54W7U64 環境で,DevXP\~\CSCallL\bin\Debug\CSCallL.exe を起動して,「ボタン 1」 もエラーとなる.
  これは,AsFile.dll の 64 ビット版がないことによるものと思うが,…
  うまい方法がよくわからない.


2013/08/06
既存の AsHVR.exe などがうまく動作しないのは変わらないが,
  VC 8 で新規に MFC ダイアログベースのプロジェクト TstComE を作成.オートメーションを有効に.
  メソッド GetTmpPath を追加して実行するとうまくいった.


C++/CLI コンソール AP として作成.
// CPCallL.cpp : メイン プロジェクト ファイルです。
#include "stdafx.h"
using namespace System;
using namespace System::Windows::Forms;
int main(array<System::String ^> ^args)
{
  {
    iSFile::SearchF^ srchF = gcnew iSFile::SearchF();
  // String^ selFile = srchF->BrowseFile("%Temp%\\","") ;
  // MessageBox::Show(selFile) ;
    }
  {
    AsHVR::AsHVR^ hmpvr = gcnew AsHVR::AsHVR();
  // String^ key = hmpvr->GetKeySP();
  // MessageBox::Show(key);
    }
  {
    TstComE::TstComE^ tce = gcnew TstComE::TstComE() ;
    String^ tmpFile = tce->GetTmpPath() ;
    MessageBox::Show(tmpFile) ;
    }
  return 0;
  }
今度は TstComE 以外うまく動作しない.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

CLI MSDN のサンプルなど

連載! とことん VC++
  第 8 回 C++/CLI を利用した相互運用 ~ネイティブ C++ から .NET の利用~
  第 9 回 C++/CLI を利用した相互運用 ~.NET からのネイティブ C++ 資産の再利用~


VC++ 2010 Express などが対象となっている.
インストールなしで用意できた環境が VS 2008 だったが,特に問題なく進められた.


メニューの「プロジェクト」-「参照の追加」は,VC 2003 以降?
VC 2005 , VC 2008 では,ソリューションエクスプローラのプロジェクトの下に「参照設定」がない?
  VC 2003 には存在するので.
VC 2002 では,プログラミング VisualC++.NET Vol.2 429 ページで
  #using <..\Ex32a\Debug\Ex32a.dll> となっている.


さまざまな文字列型間で変換する
Visual C++ で System::String* から char* に変換する方法
System::String を wchar_t* または char* に変換する
BUG: The VC++ .NET or VC++ 2005 debugger cannot display std::string and std::wstring variables correctly


2013/08/05
C++/CLI を用いて、.NET 対応アプリケーションから MFC 対応クラスを使用する
  慣れかもしれないが,ちょっと面倒に感じる.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

Ubuntu で include

プラットフォームに依存しない C++ コードのコンパイルのテストなどを目的に,Ubuntu 環境に設定中…
MonoDevelop で,プロジェクトごと?のインクルードパスの設定は見つけた.
  メニューの「プロジェクト」の一番下に「~のオプション」.
  「ビルド」-「コード生成方法」-「パス」のタブ.
テストしたい(共通の)コードはネットワーク上にあるので,WinXP 上の Eclipse では,環境変数を利用していた.
  DEVXP_SRC=\\DevXP\C_Drive\~\Develop\_.SRC
  C_INCLUDE_PATH=%DEVXP_SRC%\__CPR_:~
  CPLUS_INCLUDE_PATH=%C_INCLUDE_PATH%
Mac では(Xcode では),設定がよくわからず,main.cpp にフルパスで書いていた.
  #include “/Volumes/C_Drive/~/_.SRC/Test/TestMem.cpp”


Linux ではマウントする必要があるみたいでここを参考にさせてもらって設定.
  この時,sudo mount -t smbfs //devxp/c_drive /mnt/~ で
    mount error: could not resolve address for devxp: Unknown error
  sudo mount -t smbfs //192.168.0.10/c_drive ~ で通る様になった.
MonoDevelop で,/mnt/DevXP/C_Drive/~ を指定してコンパイルが通る様になった.
また,Eclipse でもメニューの「プロジェクト」-「プロパティ」,「C/C++ 一般」-「パスおよびシンボル」に設定がある.


環境変数としての設定はちょっとわからず.やったとこまで.
  DEVXP_SRC=”/mnt/DevXP/C_Drive/Documents and Settings/~/_.SRC”
  ” または ‘ でくくる必要がある?
  ls などの時は,ls “$DEVXP_SRC”  (シングルクォーテーションではうまくないみたい).


2019/09/09
Linux から Windows 環境への接続
g++ インクルードパスの設定

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

この要求の処理に必要なリソースの解析中に…

プログラミング Visual C++.NET の Ex34a で,


‘/’ アプリケーションでサーバー エラーが発生しました。


パーサー エラー
説明: この要求の処理に必要なリソースの解析中にエラーが発生しました。以下の解析エラーの詳細を確認し、ソースファイルに変更を加えてください。
パーサー エラー メッセージ: 型 ‘Ex34a.ManagedCPPPage’ を読み込めませんでした。
ソース エラー:

行 1:  <%@ Page Language="c#" Inherits="Ex34a.ManagedCPPPage" %>
行 2:  <html>
行 3:  <body>

ソース ファイル: /Test/ASP_net/Ex34a.aspx   
行: 1


バージョン情報: Microsoft .NET Framework バージョン:2.0.50727.3649; ASP.NET バージョン:2.0.50727.3634


「インターネット インフォメーション サービス」を起動.
対象のフォルダ(ここでは Test/ASP_net )を選択して,「右クリック」-「プロパティ」.
「ディレクトリ」タブの真ん中あたり,「アプリケーションの設定」で「作成」する.
https://mish.myds.me/wordpress/dev/2010/01/29/構成にエラーがあります/

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

C2146

次の様なコードで,C2146 , C2065


  private: System::Void Form1_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) {
    Size cr = this->ClientSize ;
    Point lt = Point(cr.Width/3*1,cr.Height/3*1) ;
    Point rb = Point(cr.Width/3*2,cr.Height/3*2) ;
    array<Point>^ pts = gcnew array<Point>(5) ;
    {
      pts->SetValue(gcnew Point(lt.X,lt.Y),0) ;
      pts->SetValue(gcnew Point(lt.X,rb.Y),1) ;
      pts->SetValue(gcnew Point(rb.X,rb.Y),2) ;
      pts->SetValue(gcnew Point(rb.X,lt.Y),3) ;
      pts->SetValue(gcnew Point(lt.X,lt.Y),4) ;
      }
    e->Graphics->DrawLines(gcnew Pen(Color::Red),pts) ;
    }
  private: System::Void Form1_SizeChanged(System::Object^ sender, System::EventArgs^ e) {
    this->Invalidate() ;
    }


—— ビルド開始: プロジェクト: DrwLines, 構成: Debug Win32 ——
コンパイルしています…
DrwLines.cpp
c:\…\drwlines\Form1.h(75) : error C2146: 構文エラー : ‘;’ が、識別子 ‘cr’ の前に必要です。
c:\…\drwlines\Form1.h(75) : error C2065: ‘cr’ : 定義されていない識別子です。
c:\…\drwlines\Form1.h(76) : error C2228: ‘.Width’ の左側はクラス、構造体、共用体でなければなりません
型は ”unknown-type” です。
c:\…\drwlines\Form1.h(76) : error C2228: ‘.Height’ の左側はクラス、構造体、共用体でなければなりません
型は ”unknown-type” です。
c:\…\drwlines\Form1.h(77) : error C2228: ‘.Width’ の左側はクラス、構造体、共用体でなければなりません
型は ”unknown-type” です。
c:\…\drwlines\Form1.h(77) : error C2228: ‘.Height’ の左側はクラス、構造体、共用体でなければなりません
型は ”unknown-type” です。
ビルドログは “file://c:\…\DrwLines\Debug\BuildLog.htm” に保存されました。
DrwLines – エラー 6、警告 0
========== ビルド: 0 正常終了、1 失敗、2 更新、0 スキップ ==========


Drawing::Size とすることにより通る様になるが,イマイチどの様に書くべきかが理解できてない.
DrawLines についても,よくわかってない.array<Point>^ の array って何?
ここの説明がわかりやすい.


pts->SetValue(gcnew Point(lt.X,lt.Y),0) ; の gcnew はいらない?
関数の引数の const ~ & はどこへ?


printf や CString::Format の “%10.3f” の様な形式
  String::Format で “{0,10:F3}”


C:\…\HelpPnt.hxx(72) : error C3083: ‘Drawing’: ‘::’ の左側のシンボルには、型を指定しなければなりません
C:\…\HelpPnt.hxx(72) : error C2039: ‘Point’ : ‘System’ のメンバではありません。
C:\…\HelpPnt.hxx(72) : error C2065: ‘Point’ : 定義されていない識別子です。
#using <System.Drawing.dll> を追加

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

CLI + MFC

CLR コンソール アプリケーションを作成.
Console::WriteLine を追加.


#include “stdafx.h”
using namespace System;
int main(array ^args)
{
  Console::WriteLine(L”Hello World”);
#ifdef _WIN32
  Console::WriteLine(L”WIN32″);
#endif
#ifdef __cplusplus_cli
  Console::WriteLine(L”CLI”);
#endif
#ifdef __CLR_VER
  Console::WriteLine(__CLR_VER);
#endif
#ifdef _MFC_VER
  Console::WriteLine(_MFC_VER);
#endif
  return 0;
  }
実行すると,
C:\…>”C:\…\debug\ConAp.exe”
Hello World
WIN32
CLI
20050727


これに MFC の機能を追加しようとしたがわからなかったので.MFC コンソール AP を作成して /clr を追加することにした.


#include “stdafx.h”
#include “ConMFC.h”
//
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
//
using namespace System;
// 唯一のアプリケーション オブジェクトです。
CWinApp theApp;
//
using namespace std;
//
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
  int nRetCode = 0;
//
  if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))  {
    _tprintf(_T(“致命的なエラー: MFC の初期化ができませんでした。\n”));
    nRetCode = 1;
  }
  else {
    // TODO: アプリケーションの動作を記述するコードをここに挿入してください。
  }
  Console::WriteLine(L”Hello World”);
#ifdef _WIN32
  Console::WriteLine(L”WIN32″);
#endif
#ifdef __cplusplus_cli
  Console::WriteLine(L”CLI”);
#endif
#ifdef __CLR_VER
  Console::WriteLine(__CLR_VER);
#endif
#ifdef _MFC_VER
  Console::WriteLine(_MFC_VER);
#endif
  return nRetCode;
}
実行すると,
C:\…>”C:\…\debug\ConMFC.exe”
Hello World
WIN32
CLI
20050727
2048


CLR のバージョンは,2.0.50727
MFC は 0x0800
VC 定義済みマクロ

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

ASP.NET Web

Visual Studio .NET スタートブック を読みながら,ASP.NET Web サービスをテスト(使用した VS は 2005 ).


新規プロジェクトで出来上がった,Service1.asmx.vb の
<WebMethod()> Public Function HelloWOrld() … End Function  の次に,以下を追加.
  <WebMethod()> Public Function CalcSvc(ByVal x As Integer, ByVal y As Integer) As Integer
    Return x + y
  End Function
実行も本の通り.
同様に,Service1.asmx.cs では
  [WebMethod]
  public string HelloWorld() {
    return “Hello World”;
  }
  [WebMethod]
  public int CalcSvcCS(int x ,int y) {
    return x + y ;
  }


今度は C++ .
面倒だったので CalcCPPClass.h のみに.
  [System::Web::Services::WebMethod]
  String ^HelloWorld();
  [System::Web::Services::WebMethod]
  int CalcSvcCPP(int x,int y) { return x+y ; }
ソリューションに複数のプロジェクトとしていたので,どこかの設定が違うのか VS から直接の起動が出来ない.
ブラウザで //localhast/~/~.asmx を指定すれば期待した動作となる.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

Mono

ここを参考にさせてもらって,MonoDevelop をインストール.
C# のコンソールプロジェクトで作成したスケルトンのまま,ビルド,実行はすんなり動作した.
先日作成したフォームを塗りつぶすコードも,プロジェクトをそのままコピーして実行できる.
     private void Form1_Paint(object sender, PaintEventArgs e)
     {
       LinearGradientBrush brush = new LinearGradientBrush
            (ClientRectangle,Color.Green,Color.White,LinearGradientMode.ForwardDiagonal);
       e.Graphics.FillRectangle(brush,ClientRectangle);
     }
VisualC#.NET プログラミング入門にある AssemblyViewer も起動はしている.
機能の動作はエラーとなることもあるが,これはこの exe などの制限かもしれない.
VS 2005 で生成できる C# のスクリーン セーバ スタート キットも実行できる.
  /c で設定画面を表示して rss を指定しても,RSS の読込が正しく行われない?
   → と思ったが,やり直したら?正しく RSS が読めている.
     mono SSaveCS.exe [/c]


VB.NET のプロジェクトは生成できるが,ビルドしようとするとコンパイラがないとのエラー.
検索して,vbnc をインストール.
コンソール AP は通る様になったが,Windows フォームではコンパイルエラー?
  Application.Designer.vb
    Me.MainForm = Global.WinApVB.FormVB
      ’WinApVB.FormVB’ is a type and cannot be use as an expression.(VBNC30691)
    VB Windows フォームには対応していないのか?

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

OpenCV 環境作成

C++/CLI & OpenCV 画像処理 GUI プログラミング を購入したので,環境を作ってみた.
OpenCV 2.4.3 などは VC 9 , 10 が標準で用意されているので,VS 2008 をインストール.
  VS のインストールに時間がかかるので,平行して Linux の環境にも作成してみたが,よくわからず.
第 1 章の C++/CLI での読込まで,特に問題なくできた.


第 2 章をやっていて,ビルドすると
  —— ビルド開始: プロジェクト: 03Flip, 構成: Debug Win32 ——
  コンパイルしています…
  stdafx.cpp
  コンパイルしています…
  AssemblyInfo.cpp
  03Flip.cpp
  C:\…\include\opencv2/core/types_c.h(305) : error C3862:
     ‘cvRound’: /clr:pure または /clr:safe を伴うアンマネージ関数をコンパイルできません
     インラインのネイティブ アセンブリはマネージ コードでサポートされていません
  C:\…\include\opencv2/core/types_c.h(305) : error C3645:
     ‘cvRound’ : __clrcall は、ネイティブ コードにコンパイルされた関数では使用できません
  コードを生成中…
  ビルドログは “file://c:\…\Projects\T_OpenCV3Flip\Debug\BuildLog.htm” に保存されました。
  03Flip – エラー 2、警告 0
/clr:pure から /clr に変更していなかった.


2013/07/18
第 5 章で,toolStripStatusLabel1 がわからなかった.
  statusStrip1 を配置後,ステータスバー上のドロップダウンで,StatusLabel を追加する必要がある.
第 7 章のドラッグ&ドロップ対応で,
  どこを間違えているのかわからないが,ボタンの Panel 部分にかぶって PictureBox が表示されている.
  保存対応ではもう一度最初からやって,これは OK.
これらとは直接関係ないが,変な現象.サムネイルが合っていない.再起動しても改善せず.
OpenCV


2013/07/19
7 章のPictureBox がかぶるのは,どうも他のフォームからコピーした時に何かの情報が変わってしまうみたい.
Panel を削除して,もう一度 Panel と PictureBox を配置することにより意図した動作となった.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

su でパスワードが…

su でパスワードが入らない.
そもそも,いつどこで設定したのか記憶がない.
sudo でのパスワードは通る.
検索すると,
  [linux]Ubuntuは初期状態ではrootが使えない
  Ubuntu Linuxのルートパスワード

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

フォームへの描画

フォームに,左上から右下へグラデーションで表示する動作を幾つかの言語で書いてみた.


C#
//…
using System.Drawing.Drawing2D;
//…
namespace WinApCS
{
   public partial class FormCS : Form
   {
     public FormCS()
     {
       InitializeComponent();
     }
     private void Form1_Paint(object sender, PaintEventArgs e)
     {
       LinearGradientBrush brush = new LinearGradientBrush
            (ClientRectangle,Color.Green,Color.White,LinearGradientMode.ForwardDiagonal);
       e.Graphics.FillRectangle(brush,ClientRectangle);
     }
     protected override void OnResize(System.EventArgs e)
     {
       Invalidate();
     }
   }
}


VB
Imports System.Drawing.Drawing2D
Public Class FormVB
   Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
     Dim brush As New LinearGradientBrush
            (ClientRectangle, Color.Blue, Color.White, LinearGradientMode.ForwardDiagonal)
     e.Graphics.FillRectangle(brush, ClientRectangle)
   End Sub
   Protected Overrides Sub OnResize(ByVal e As System.EventArgs)
     Invalidate()
   End Sub
End Class


J#
//…
import System.Drawing.Drawing2D.*;
//…
public class FormJS extends System.Windows.Forms.Form
{
   //…
   private void Form1_Paint(Object sender, PaintEventArgs e)
   {
     LinearGradientBrush brush = new LinearGradientBrush
         (get_ClientRectangle(),Color.get_Red(),Color.get_White(),LinearGradientMode.ForwardDiagonal) ;
     e.get_Graphics().FillRectangle(brush,get_ClientRectangle()) ;
   }
   protected void OnResize(System.EventArgs e)
   {
     this.Invalidate();
   }
}


C++/CLI
//…
namespace WFmCpClr {
   //…
   using namespace System::Drawing::Drawing2D;
   //…
   public ref class FormVC : public System::Windows::Forms::Form
   {
     //…
     private: System::Void FormVC_Paint
            (System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) {
       LinearGradientBrush^ brush = gcnew LinearGradientBrush
            (ClientRectangle,Color::Olive,Color::White,LinearGradientMode::ForwardDiagonal) ;
       e->Graphics->FillRectangle(brush,ClientRectangle) ;
     }
     private: System::Void FormVC_Resize(System::Object^ sender, System::EventArgs^ e) {
       Invalidate();
     }
   };
}

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

error BC30451

ゼロから学ぶ!最新 Visual Basic をやっていて,
  —— ビルド開始: プロジェクト: GetGMail, 構成: Debug Any CPU ——
  C:\…\GetGMail\Form1.vb(29) : error BC30451: 名前 ‘HttpUtility’ は宣言されていません。
  C:\…\GetGMail\Form1.vb(30) : error BC30451: 名前 ‘HttpUtility’ は宣言されていません。
  C:\…\GetGMail\Form1.vb(112) : error BC30451: 名前 ‘HttpUtility’ は宣言されていません。
  ========== ビルド: 0 正常終了または最新の状態、1 失敗、0 スキップ ==========
検索すると,「参照の追加」で System.Web を追加する必要があるとのこと.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

CLI

今度は,C++/CLI .
以前作成した MFC プロジェクト MemStt を変更.
  Release 版プロジェクトのプロパティで,
    「構成プロパティ」-「全般」-「共通言語ランタイム…」を「/clr」に.
      ビルドすると確かにファイルサイズは大きくなる.
  Debug 版だと,
    cl : コマンド ライン error D8016 : コマンド ライン オプション ‘/RTC1’ と ‘/clr’ は同時に指定できません
      正しい対応方法はわからないが,vcproj をエディタで開いて,BasicRuntimeChecks=”3″ を削除.


Form クラスに MemoryStatusAry を確保すると,
  c:\~\Form1.h(26) : error C4368: ‘MemSA’ をマネージ ‘MemSF::Form’ のメンバとして定義できません。
    MemoryStatusAry* MemSA とすることで対応?

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

Eclipse での設定など

ndk-build でのエラー
Compile thumb : ~ <= ~.c が表示されない.
  Android.mk の記述ミス.LOCAL_SRC_FILE になっていた(S がなかった).
TextView に setText などをするとエラーになる.
  setContentView(R.layout.activity_main) が呼ばれていなかった(コメントになっていた).
cpp として作成したものの利用で実行時エラー
  原因はわからず.c のファイルとして書換えてビルドで通った.


undefined reference to ‘sysinfo’
  Using sysinfo in Android NDK を見つけたが,使い方がわからず.
    undefined reference to ‘__NR_sysinfo’ となってしまう.


C/C++ プロジェクトのインクルードパスの設定
  プロジェクトの「プロパティ」,「C/C++ ビルド」-「設定」-「ツール設定」-「GCC ~ Compiler」-「インクルード」.
    全プロジェクトで有効にするには環境変数としての登録が必要?

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

NDK 環境作成 – 2

Eclipse と ADT で,Java を使用した Android AP は作成可能となった.
まだ NDK を入れてないので,プロジェクトの「右クリック」から「Android ツール」-「Add Native Support…」を選択すると,
NDK nothing
Android NDK を展開し,そのパスを「ウィンドウ」-「設定」,「Android」-「NDK」にパスを設定.
これで,「Add Android Native Support」ダイアログの「完了」が押せる様になる.


コマンドプロンプトから ndk-build などを実行するために環境変数の Path を設定
  %ANDROID_NDK% に c:\~\android-ndk-r8e
  %Path% に %ANDROID_NDK% を追加.


Android NDK: WARNING: APP_PLATFORM android-14 is larger than android:minSdkVersion 8 in ./AndroidManifest.xml
  よくわからないが,検索すると
    APP_PLATFORM=android-8 と記述した Application.mk を jni の下に作成すると通る.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

NDK 環境作成 – 1

まだ完全ではないが,何とか NDK のサンプルのビルド,実行までは可能となったので,
ここまでで参考にした本は,Android アプリ開発超入門Android NDK 入門
他にも NDK 関係の本は購入したが,開発環境の構築に関してはよくわからなかった.


PC 環境としては,Virtusl PC で Win XP を用意.メモリは 1 GB でも動作するが,1.2 GB 以上ある方が良い?
メモリ 1 GB では,エミュレータでのテストでメモリ不足となってしまったことがあった.
Eclipse のインストールには,Pleiades – Eclipse プラグイン日本語化プラグインを利用.
  Pleiades All in One 4.2.2a.v20130303
    その中の Ultimate 32 bit Full Edition
  注意しなければならないのが,zip の展開先フォルダの指定.
    WIn XP で,zip を c ドライブのルートに置いて,展開ウィザードの展開先を c:\ に指定した.
    展開には 30 分以上かかった(45 分位)?
Pleiades
ここまでで,「ファイル」-「プロジェクト」から,「Hello World C++ プロジェクト」-「MinGW」で exe が生成できる.
MInGW gcc


「ヘルプ」-「新規ソフトウェアのインストール」でADT プラグインを組込み.
  作業対象に,http://dl-ssl.google.com/android/eclipse/ と入力.
  「開発ツール」と「NDK プラグイン」をチェックしてインストール.
Eclipse の再起動後,SDK の場所を指定するか,ダウンロードしてインストールできる.
これで,「Android アプリケーション プロジェクト」が生成できるようになる.
  デフォルト状態でのスケルトンの生成では,API 8 のインストールが要求された.
出来上がったスケルトンの状態では,ビルドできない.
  MainActivity.java の R の部分がエラーとなっている.
   「ウィンドウ」-「パースペクティブのカスタマイズ」で「Android SDK および AVD マネージャー」を追加.
  よくわからないが,SDK Manager を起動してインストールされてないとなったものをインストール.
    Android SDK Build-tools
    4.2.2 ARM , x86 , MIPS
    Google USB Driver
  Eclipse の再起動で,R の部分のエラー表示はなくなりビルド可能となった.
    エミュレータを作成して,動作を確認.
    Java での Android 開発環境ができた.
Android Java Hello
他にも,SDK Manager を利用して,幾つかの API をインストール.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

Fedora をインストール

Mac の VirtualBox に Fedora をインストール.
  最初,WIn 7 の VirtualBox に Ubuntu をインストールした.
  インストール直後は動作していたが,そのうち起動時にブルースクリーンとなることがあった.
  以前 Android 環境を入れた時もそうだったので,VirtualBox との相性か?


ホームにできるフォルダが日本語名となるため検索すると,
  ホームディレクトリのフォルダ名を日本語から英語に変更するには


2013/06/26
環境を作成した時点では,うまく Windows Network が見えなかったが,…
  今開いてみたら見える様になっていた.


2013/06/27
デスクトップをカスタマイズしようと,ここを参考に GNOME Shell を有効に,…
  インストール後,再起動して,「GNOME Shell 拡張機能」の場所がわからなかったので,
    「アクティビティ」-「アプリケーションの表示」-「Tweak Tool」.
      「検索ワードを入力…」に “Tool” と入力するか,「アクセサリ」で絞った方がはやいかも.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

python.exe CreateProcess error=14001

Win XP 環境に,Titanium Studio をインストール.
Android SDK などの環境のパスなどを設定.
プロジェクトを作成して,スケルトンのままで実行すると,
  FastDev launching error
    Cannot run program “C:\Program Files\Appcelerator\Titanium Studio\plugins\
      com.appcelerator.titanium.python.win32_1.0.0.1338515509\python\python.exe”:
      CreateProcess error=14001, ?±??A?v???P?[?V??????\?¬?a?3?μ?-??¢????A?A?v???P?
検索すると VC の再頒布パッケージが必要とのこと.
イベントビューアを見ると確かに,
python VC9 CRT
面倒だったので,VC 9SP1 の両方をインストールして,起動する様になった.


2013/06/25
スケルトンの状態で,「Run As」-「Android Emulator」とすると,
  Titanium Command-Line Interface, CLI version 3.1.1, Titanium SDK version 3.1.1.GA
  Copyright (c) 2012-2013, Appcelerator, Inc. All Rights Reserved.
  [ERROR] : “Missing Java SDK. Please make sure Java SDK is on your PATH
  [ERROR] Application Installer abnormal process termination. Process exit value was 1
どこの部分を設定するのかよくわからなかったが,
インストール手順などを検索すると,環境変数を指定していない.
どれが必要なのかよくわからないが,
  %ANDROID_SDK% , %JAVA_HOME% の追加と,%PATH% にそれぞれの bin や tools などを追加.
これで,Emulator は起動する様にはなったが,うまく動作してない?それとも遅いだけ?


SMT-i9100 の接続
以前調べた時,実機との接続のためのドライバがないことは知っていた.
が,あまりにも Emulator では遅かったので,…
参考にさせてもらったのはここ
Android 開発のためのテスト環境を Virtual PC 内の WinXP に作成している.
SDK もその環境にはインストールしてある.
そのため,ゲストの SDK のフォルダを共有してインストールすることにした.


1. ホストの Win7 x64 で先ず接続するために.
  android_winusb.inf に SMT-i9100 用を追加.
    [Google.NTamd64]
    %SingleAdbInterface% = USB_Install, USB\VID_04E8&PID_9102
    %CompositeAdbInterface% = USB_Install, USB\VID_04E8&PID_9102&MI_01
  後で,ゲストの XP にもドライバを入れる必要があるので,[Google.NTx86] にも追加.
2. ドライバのインストールで,変更した inf を指定.
  デバイスマネージャで Android Device – Android Composite ADB Interface となっていれば良いみたい.
3. 今度はゲストの XP に.メニューの「USB」-「SMT-i9100」 で接続.
  ホストの時と同様に inf を指定してドライバをインストール.
Titanium Studio で,スケルトンのプロジェクトを開いて,Android Device として実行すると何とか起動した.


2013/06/27
KitchenSink をダウンロードして,Mobile Web Preview in Browser は動作するが
Android Device とすると,
  Titanium Command-Line Interface, CLI version 3.1.1, Titanium SDK version 3.1.1.GA
  [INFO] : Running build process: python “C:\…\mobilesdk\win32\3.1.1.GA\android\builder.py” …
  [INFO] logfile = C:\…\Titanium_Studio_Workspace\KitchenSink\build.log
  [ERROR] : Build process exited with code 1
  [ERROR] : Project failed to build after 7s 33ms
よくわからないが,Android 3.0 (API 11) のインストールで通る様になった?
けど,実機 SMT-i9100 では動作しない?
PC ,デバイス共に再起動で,起動時の Titanium のロゴまでは表示された.
途中で止まったようになったので,もう一回デバイスを再起動して,メニューから表示するとできた.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

MinGW インストール

Android の開発環境を用意しようとしていて,
Pleiades – Eclipse プラグイン日本語化プラグイン をインストールまでは行っていた.
pleiades-e4.2-ultimate-32bit-jre_20130303.zip
以前インストールした(展開)時は,ファイル名の長さの制限で引っかかって,インストールまでで中断していた.


が,よくわからない.
その中に MinGW があったので,そこから,…


~\MinGW\bin に gcc.exe などがあったので,
テスト用の Hello.c を作成して,コンパイルすると a.exe はできた.


c:\~\My Documents\Temp\Test> type T_Hello.c
#include <stdio.h>
int main (void) {
  printf(“hello\n”) ;
  return 0 ;
  }
 
c:\~\My Documents\Temp\Test> C:\pleiades\eclipse\mingw\bin\gcc.exe T_Hello.c
 
c:\~\My Documents\Temp\Test> dir
ドライブ C のボリューム ラベルがありません。
ボリューム シリアル番号は 7C5D-D1D9 です
c:\~\My Documents\Temp\Test のディレクトリ
2013/06/20 14:19 .
2013/06/20 14:19 ..
2013/06/20 14:19 49,177 a.exe
2013/06/20 14:07 78 T_Hello.c
2 個のファイル 49,255 バイト
2 個のディレクトリ 114,850,582,528 バイトの空き領域
 
c:\~\My Documents\Temp\Test> a
hello
 


これでは使い勝手が悪いので調べると,MSYS が使えそう.
けど MinGW フォルダには見当たらない.
MinGw Getting Started のリンク mingw-get-inst より,もう一度インストール.


MinGW Shell で開いてくるのは,C:\MinGW\msys\1.0\home\Iwao
 
C:\>tree \MinGW\msys\1.0\home
フォルダ パスの一覧
ボリューム シリアル番号は 7C5D-D1D9 です
C:\MINGW\MSYS\1.0\HOME
└─Iwao
  └─Temp
    └─Test


MSYS コンソール内で,
  ネットワーク上のファイルは,//DevXP/C_Drive/…/c_src/
  ls c:
  ls \\
  ls \\\\DevXP\\C_Drive
  \\ と / は,等価?
  more ではなく less


C++ のコード(std::cout<<“Hello CPP” << std::endl ;)をコンパイルすると,
$ gcc testcpp.cpp
C:\~\Temp\ccYlk1I9.o:testcpp.cpp:(.text+0x19): undefined reference to `std::cout’
C:\~\Temp\ccYlk1I9.o:testcpp.cpp:(.text+0x1e): undefined reference to `std::basic_ostream …

C:\~\Temp\ccYlk1I9.o:testcpp.cpp:(.text+0x6a): undefined reference to `std::ios_base::Init::Init()’
collect2: ld はステータス 1 で終了しました
  gcc ではなく,g++ を利用するみたい.
 
また,出来上がった C++ の exe は,MSYS コンソールの外では,
—————————
TestCPP.exe – コンポーネントが見つかりません
—————————
libgcc_s_dw2-1.dll が見つからなかったため、このアプリケーションを開始できませんでした。
アプリケーションをインストールし直すとこの問題は解決される場合があります。
—————————
OK
—————————


2013/06/25
Eclipse を起動して,
 「ファイル」-「新規」-「C++ プロジェクト」,「Hello World …」-「MinGW GCC」.
ビルド,実行で,
Eclipse Hello MinGW

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.