ソフトウェア開発

QEMUをWindowsでビルドする手順

QEMUをちょっと改造したくなったので、Windowsでビルドしてみました。 今回はARMv8 AArch64用のQEMUをWindwos向けにビルドしてみます。他のアーキテクチャのビルドも手順は同じですので参考にしてください ビルド環境の構築 ビルドにはMinGW64を使用しますの…

【解決!】ignoring invalid character `#' in expression

Cortex-A5 CMSISのリンカスクリプトをベースにコンパイル環境を構築していると こんなエラーが発生しました。 ld.exe:ARMCA5.ld:1: ignoring invalid character `#' in expression ld.exe:ARMCA5.ld:1: syntax error collect2.exe: error: ld returned 1 exi…

無償のVisual Studio Expressエディションの代替環境 「Pleiades All in One(Eclipse)」

こちらに書いたように無償のVisual Studio Expressは2017を最後に廃版になります。 eng-notebook.com となれば、その代わりの環境が必要になりますね。 その第一候補がPleiades All in Oneです! Pleiades All in Oneとは? Pleiades All in OneはEclipseを…

大企業ではVisual Studio Communityは使えません!大企業の方はExpressを使いましょう!

昔はVisual Studioは高くて高くて購入なんかできませんでしたが、今では無償で使うことができます。 無償で使えるVisual Studioには Visual Studio Community Visual Studio Express の2種類があります。 それぞれの違いを見ていきましょう。 Visual Studio …

【解決!】Visual Studio(Visual C++)にdirent.hがない!

Visual C++でopendir()などを使用するためにdirent.hをincludeしようとしましたが、エラーになってしまいました。どうやらVisual C++にはdirent.hが用意されていないみたいですね。 代わりにこれを使います。 msdirent.h これでdirent.hを使ったソースをVisu…

DLLファイルに含まれる関数名(エクスポート関数)の簡単な調べ方

dllファイルに含まれる関数を調べたい場合はVisual Studioに付属のDependency Walkerを使うのが定番だったんですが、最近のVisual Studioには付属してないみたいですね。 Visual Studioに付属しなくなった代わりにVisual Studioのヘルプページから公式ページ…

ftell()/fgetpos()を使うならバイナリモードで!テキストモードでftell()/fgetpos()を使ってはまった件

ftell()の不可解な動作にはまってしまいました。また同じ間違いを繰り返さないようにメモ。 『ファイルを読み込みながらftell()で読み込んだ位置を保存、fseek()でそこに戻る』 なんていうテキスト処理をVisual Studio Express 2015で作ってたんですが、なぜ…

AmazonがRTOS!?「Amazon FreeRTOS」

FreeRTOSのことを調べてて気になるページを見つけました。 Amazon FreeRTOS えっ!?AmazonがFreeRTOSをリリース!? AWSに接続できるIoT向けOS どうやら、Amazon FreeRTOSはIoT向けAWSサービスに接続するためのRTOSみたいです。 Amazonとしては、IoTの爆発…

MDK-ARMでgccを使う方法

MDK-ARMでは通常はARMCC5(armcc)やARMCC6(armclang)を使いますが、実はGCCも使うことができます。 無料のMDK-ARM LiteではARMCCで生成できるオブジェクトサイズに制限がありますが、GCCを使えば、そんな制限なしでMDK-ARM Liteを使った開発をすることが…

Visual Studio Express 2017 のダウンロード方法

Visual Studio Express 2017 が公開されました! 最近はCommunity押しのMicrosoftですが、ライセンス的にCommunityが使えない場合もありますしExpressの公開はうれしいですね。 ダウンロード方法 ではダウンロード方法です。 まず、Visual Studio Expressの…

VisualC++でメモリリークを自動検出する方法

C/C++でコーディングするなら避けて通れないのがメモリリーク対策です。 高価なメモリリーク検出ツールもありますが、VCではそんなもの買わなくてもメモリリークを検出する方法が用意されています。 1行コードを付け足すだけ この機能の使用方法は簡単! こ…

【解決!】armcc/armclangでビルドしたプログラムがBKPT命令で停止する

armcc/armclangでビルドしたプログラムを実行すると、なぜかmain()にたどり着くことなくBKPT命令で停止してしまいます。 なんだこれ?BKPT命令なんて書いてないのに・・・ 原因はセミホスティング __main(armcc/armclang標準のスタートアップルーチン)内で…

【ARM C Compiler】セミホスティングを無効化する方法

ARM C Compiler(armcc/armclan)でビルドすると、デフォルトでセミホスティングを使おうとしてしまいます。 セミホスティングに対応していないシステムでARM C Compilerを使う場合には、これがトラブルの元になるんですよね。。。 そんなときは、セミホステ…

ARMCCでファイルの依存関係リストを生成する方法

gccだと、-MMD -MPでファイルの依存関係リストを生成してくれます。 ではARMCCではどうすればいいかというと、ARMCC5系か6系かによって与えるオプションが異なります。 ARMCC 5.x ARMCC 5.x系はちょっと複雑です。 --md --no_depend_system_headers --phony_…

【汎用的に使える】便利なmakefileのサンプル

普段はVisual StudioなどのIDEを使ってるんですが、場合によってはgcc+makefileを使うこともあります。 特に組み込み向けプログラミングとか。 そんなとき、『あれっ!?Makefileってどう書くんだっけ???』となることがあるので、汎用的に使えるMakefile…

Visual Studio Express 2015 日本語版のダウンロードはこちらから!Visual Studio Dev Essentialsからのダウンロード方法

Visual studio 2015 Expressはこちらからダウンロードできるはずなのですが、 Visual Studio Express - Visual Studio Community の試用 画面を下にスクロールして、 からインストーラをダウンロードしてインストールしてみると、、、これ英語版じゃないです…

【解決!】SourceTree起動時に『You selected Mercurial is older than 3.7.3・・・』と表示される

SourceTree起動時にこんなメッセージが表示されるようになりました。 You selected Mercurial is older than 3.7.3 The Mercurial team strongly encourages all users to upgrade to 3.7.3 or later due to a security vulnerability. Your current configu…

【朗報!】DelphiとC++Builderが無償化されました!

やっとデルファイと C++Builderが無償化されました! デルファイ や C++Builderと言えばライブラリが充実してて簡単にGUIアプリが作れる開発環境です。 これが無料で使えるなんてうれしい! これからのアプリ開発に使ってみようと思います。 ダウンロードは…

【解決!】Visual Studio(Visual C++)でerror C4996やwarning C4996が出る

Visual C++で開発中にerror C4996またはwarning C4996が出て鬱陶しくなることがあります。 しかも、error C4996、warning C4996はC言語的には問題がないはずなのに出るんですよね。 1>c:\consoleapplication1\consoleapplication1.cpp(19): error C4996: 'st…

chrome.tabs.executeScript()でインジェクト(実行)するスクリプト内ではconstは使えない

chrome拡張を作っていてちょっとはまったのでメモ。 chrome.tabs.executeScript()でスクリプトを実行することができますが、なぜか意味不明の挙動になりました。 原因はconstでした。例えば、 chrome.tabs.executeScript(null, { file: "process.js"}, funct…

javascriptでカンマ区切りの数値文字列を数値に変換する

javascriptでは、数字文字列に対して数値演算を行うと、文字列を自動的に数値に変換して演算してくれます。 ただし、数値列中にカンマが含まれていると変換が行われません。 こんなときは、以下のようにすればOKです。 function toNumber(str) { return Numb…

WPFでコントロールを再描画(表示を即更新する)方法

WindowsフォームにはコントロールにUpdateメソッドがあって、これを使うと表示を即時更新できました。 が、WPFのコントロールにはUpdateメソッドがありません。 そんなときは、これを使えばOKです。 WPF再描画のためのDoEventsメソッド ・ GitHub https://gi…

Windowフォーム(C++/CLI)でウインドウハンドルやインスタンスを取得する

C++/CLIでWindowフォームアプリを作っていて、ウインドウハンドルやインスタンスを取得したいことがあります。 そんなときはこうすればOKです。 ウインドウハンドルの取得 HWND hWnd = (HWND)this->Handle.ToInt32(); インスタンスの取得 HINSTANCE hInst = …

【Visula C++】ソースコード中でライブラリのリンクを指示する方法

ライブラリのリンクを指定する場合、普通はプロジェクトの設定で指定しますが、ちょっと面倒です。 実は、もっと手軽にソースファイル中でライブラリを指定することができます。 ソース中でライブラリを指定する方法 #pragma commentを使えばライブラリを指…

二次元(多次元)配列のポインタの書き方

C言語で二次元配列を関数に渡して、関数内でも二次元配列としてアクセスしたくなったので、やり方を調べてみました。 二次元配列のポインタは (*p)[] でOKです。 サンプルコードをどうぞ void hoge(int (*p)[3]) { printf("%d, %d, %d\n", p[0][0], p[0][1],…

【解決!】fatal error LNK1123: COFF への変換中に障害が発生しました

久々にVisual C++ 2010 Expressを使う機会があったのですが、ビルドするとこんなエラーが。 LINK : fatal error LNK1123: COFF への変換中に障害が発生しました: ファイルが無効であるか、または壊れています。 どうやらSP1がインストールされていない場合に…

古いDirectX SDKのダウンロード方法

過去のDirectX SDKを使いたくなり日本マイクロソフトのHPを探しましたが見当たらず。 いろいろ探し回ってやっと見つけました。 direct x 9 sdk - Search Microsoft.com やっぱりこういうときはUSサイトを調べないとだめですね。 DirectX 8.1 SDKが欲しい方は…

最近の環境ではmalloc()で確保したメモリ領域が初期化(0クリア)されてる件

C言語の規格では、malloc()した領域は不定値になっています。 malloc()は単にメモリ領域を割り当てるだけなので、malloc()で返される領域にはその前に書き込まれていたデータがそのまま残っています。 ただ、最近の環境ではちょっと事情が違うようです。 最…

Intelコンパイラが凄い!自動ベクトル化が秀逸なIntel Parallel Studio XE

Intel Parallel Studio XEって知ってますか? これは、Intelが自社CPUの性能を最大限発揮するために開発したコンパイラです。 Intel AVXや、米国標準暗号方式であるAES命令にも対応しており、Intel CPUの性能を最大限引き出すことができます。 更に、SIMD命…

朗報!Visual Studio 2015はiOSやAndroidにLinuxアプリも作れるぞ!

最近はEclipseベースのIDEもよくみかけますが、やっぱり開発環境としてはVisual Studioが一番使いやすい! そんなVisual Studioの次のバージョンVisual Studio 2015ではWindows用だけでなく、iOSやAndroid、それにLinuxアプリも作れるそうです。 Microsoft、…