技術メモ -64bit,Device Driver,Camera,programming-
Windows programmingとMachine Visionを中心にした、日頃気づいた技術をメモします。
プロフィール

iamhideyon

Author:iamhideyon
普通の技術者です。
職業プログラマしています。
主に画像入力、画像処理、
画像ビューアー、ネットワ
ークライブラリ等を開発し
ています。
日頃気になった技術や製品
のメモを自分のために、書
き溜めて置きます。アドバ
イスやご指摘がありました
らコメントをください。



カテゴリー



全記事(数)表示

全タイトルを表示



ブロとも申請フォーム

この人とブロともになる



リンク

このブログをリンクに追加する




にほんブログ村 IT技術ブログへ
CとVBのデータ型 関数パラメータ
・VBは参照渡し(アドレス)、VC(DLL)は値渡しがデフォルト。
 COM(ActiveX)インターフェースが正式
・単精度実数を引数はByVal宣言.
・Stringの実体は可変長文字配列へのポインタ(文字列のアドレスを渡す)
・文字引数はByVal宣言
・戻り値となる引数をは,ByVal宣言し,戻り値となる引数はByRef宣言.
・標準モジュールに書く場合はPrivate句は必要ない.必然的にPublicとなる.
・大文字と小文字は区別されない.
・DLLのDEFファイル定義のエイリアスは大文字,小文字の区別する
・DLLへの構造体値渡しは、左から右へ、構造体の要素の値が正しい順序で宣言(スタック)する
・VBからVC(DLL)は文字列Stringを自動的にUnicodeからAsciiに変換
・VBと別モジュール(別の言語でコンパイルされたバイナリファイル)との連携
・VBのByte配列をDLLに渡す時は、ByRef又はAs Any宣言
・VBでは、可変長の文字列は BSTR として保持
・VBからDLLへのバッファポインタ(void又はvoid*)渡しは、as Long 宣言
 又は、 ByVal As Long宣言で、VarPtr関数でキャストして渡す。
・ユーザー定義(構造体)にvoid** 引数が含まれる場合は、void**は ByVal val() As Long宣言
 ではなく、ByVal val As Long宣言でvoid**のアドレス値(アドレス番号)を渡す

テーマ:プログラミング - ジャンル:コンピュータ

.pdb は、このプリコンパイル済みヘッダーが作成されたときに使用された pdb ファイルではありません。プリコンパイル済みヘッダーを再作成してください。

Visual C\+\+ にてプロジェクト構成を変更したり、プリコンパイル設定を変更すると発生するらいしいです。

以下確認項目を列挙します。


  • stdafx.h stdafx.cpp がプロジェクトに追加されているか?

  • stdafx.cpp を[右クリック]-[設定]-[C/C\+\+]-[プリコンパイル済みヘッダーファイル(.pch)の作成]になっているか?

  • [設定]-["プロジェクト名"]-[C/C\+\+]-[プリコンパイル済みヘッダーファイル(.pch)を使用]になっているか?

  • Debug/Releaseフォルダを削除(クリーン)してどうか?

  • (面倒ですが。。。)プロジェクトをウィザードで新規作成して、各ファイルを追加してどうか?


C++ 最適化 _インライン関数 _inline / inline / O2 Ox Oi

デバッグ リリースバージョンによりアクセス違反の発生が変わるので、いろいろソースコードとコンパイラオプションを変えて調べてみた。


まずC++のインライン関数だが、こちらはキーワードを関数に追加してもコンパイラ次第で展開されたり、されなかったりする。つまり「展開してほしい!」とコンパイラに教えるだけ。


ちなみに 「inline」「__inline」の違いは標準C++かコンパイラ依存かである。


又小さな関数ほどinlineをヒントにしてコンパイラが展開してくれる可能性が高いです。


inline関数のセマンティクスのため他のinline関数とはリンクできます。


詳細はARMのFAQを参照してください。http://www.jp.arm.com/tec_support/faqdev/ads043.html


以下がinline出来ない条件です。



  • 関数またはその呼び出し元が /Ob0 (デバッグ ビルドのデフォルト オプション) でコンパイルされている。

  • 関数とその呼び出し元の例外処理方法が異なる (一方が C++ 例外処理、他方が構造化例外処理)。

  • 関数の引数リストが可変長である。

  • 関数がインライン アセンブラを使用し、/Og/Ox/O1、または /O2 でコンパイルされていない。

  • 関数がアンワインド可能オブジェクトを値で返し、/GX/EHs、または /EHa でコンパイルされていない。

  • コピー構築されたオブジェクトを値で受け取る関数を /GX/EHs、または /EHa でコンパイルした。



詳細はを参照してください。http://www.e-typedesign.co.uk/japan/developer/library/vccore/_langref_inline.2c_.__inline.htm







FC2 Blog Ranking FC2 Blog Ranking