VisualStudioのC++で文字列の暗黙キャストを有効にする(C2664,E0167)
VisualStudio2017以降でC++使用時に以下のような文字列リテラルをポインタに代入するようなコードを書く場合、デフォルトの設定ではエラーが発生します。
char *p = "test";
C++11以降ではこのような暗黙キャストが発生する書き方は標準となっていないためエラーとなるようです。
明示的にキャストするのが良いですが、古い大規模なソースコードを扱う場合、大量のエラーが発生し修正は困難です。
VisualStudioのプロジェクトのプロパティからC/C++→Language→Conformance mode(準拠モード)の設定をYes(/premissive)からNo(/premissive)に切り替えることで無効化できます。
参考文献
stackoverflow.com
Capstoneをビルドする
Capstone disassembly frameworkをubuntuでビルドする方法
デフォルトの設定でビルド
git clone https://github.com/aquynh/capstone.git ./make.sh
クロスプラットフォーム向けのビルド
クロスコンパイラをインストール
sudo apt install g++-arm-linux-gnueabihf sudo apt install g++-aarch64-linux-gnu //arm64
AndroidNDKを利用する場合
export NDK = ndkpath ./make.sh cross-android arm
arm64
export NDK = ndkpath ./make.sh cross-android arm64
参考
g0blin Research: Capstone Engine on Android
x86_64のUbuntuでC/C++のソースコードをARM/ARM64用にクロスコンパイルしてQEMUで実行する方法のまとめ - Qiita
Ubuntu 18.04 LTSにLLVM-toolchainをインストール
はじめに、llvm公式のサイト
https://apt.llvm.org/
からwgetでapt-keyを取得し、追加する。
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add -
リポジトリの設定とapt updateを実行する。※LLVMのバージョンを変えたい場合は9を変更する。
sudo apt-add-repository "deb http://apt.llvm.org/bionic/llvm-toolchain-bionic-9 main" sudo apt update
installの実行
sudo apt install clang-9 clang-tools-9 clang-tidy-9 clang-format-9 lldb-9 lld-9
VMware上で構築したUbuntuにおいてゲストとホスト間のファイル共有ができない場合の解決方法
VMware上でUbuntuを利用する場合、vmware-toolsまたはopen-vm-toolsを利用すると思います。
VMwareの設定でファイル共有を有効にした場合、共有フォルダはUbuntu側では/mnt/hgfs/にマウントされます。
vmware-toolsがインストール済みであるにも関わらず/mnt/hgfs/以降フォルダが表示されない場合はvmware-toolsの不具合によるものです。
解決策1:vmware-toolsを再インストールする
解決策2:vmware-toolsが再インストールできない(VMwareウィンドウの管理→vmware-toolsの再インストールが選択できない)または、open-vm-toolsを利用してファイル共有をしたい
解決策2の詳細についてメモします。
参考文献からの引用です。
open-vm-toolsをインストール(デスクトップ拡張)
sudo apt install open-vm-tools-desktop
/mnt/hgfs/をマウントする。
sudo vmhgfs-fuse -o allow_other -o auto_unmount .host:/ /mnt/hgfs
永続的にマウントする場合、エディタで/etc/fstabに下記を追加
sudo gedit /etc/fstab .host:/ /mnt/hgfs fuse.vmhgfs-fuse allow_other,auto_unmount,defaults 0 0
VisualStudioでC++利用時にBOM無しUTF-8だと warning C4819 が発生する
githubから落としたCMakeプロジェクトをビルドするときに詰まったのでメモします。
VisualStudio 2017においてソースコードやその他、CMakeの場合はCMakeList.txtなどビルドに必要なファイルがBOM無しUTF-8で保存されている場合、UTF-8でエンコードされていることを認識できなくなるためwarning C4819が発生し大量にエラーが出ました。
大量に発生するエラーは一見文字コードとは関係のないエラーでばかりであったため
原因がBOMの有無であることに気づくまで時間がかかりました。
解決策としては、BOM無しで保存されているファイルをBOM有に変換して保存すれば良いです。
プログラマ向けや高性能なエディタ、最近のWindowsではBOMの有無を変更して保存しなおせます。
今回では変換が必要になるファイルが大量にあったため、NonCodeNetというソフトウェアを使用しました。
VisualStudioの場合、C#はBOMの有無は影響しないらしく、C/C++の場合はBOM有でないと
コンパイルできないとのこと。
AndroidStudioでデバッグ中にバイト配列の内容を取得(Copy value)する方法
デバッグ中に変数の内容をクリップボードにcopyする場合、
通常はCopy Valueで値を取得できますが、配列の場合はそのままではコピーできませんでした。
デバッグ中にAlt + F8またはEvaluateウィンドウを開き
Arrays.toString(inputBytes)
の評価コードを入力し、バイト配列を文字列に変換して表示することで
[ 54, -45, 71, -119]のようなバイト配列を取得できます。
参考文献
stackoverflow.com
Windowsでネットワークアダプタ/NICに関する情報を表示する方法
WMIを利用します。
cmdにて以下を実行。
wmic nicconfig list full
ネットワークアダプタのGUIDを特定するには、上記のコマンドを実行して表示された情報の
SettingID項目を確認する。
また、レジストリからも確認できる。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards
対応するアダプタのServiceNameの値を確認する。
参考
http://www.wannko.net/command/wmi/nicconfig.html
http://www.thinkpad-club.net/modules/d3forum/index.php?topic_id=2991