問題タブ [afx]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 別の DLL からの未解決の外部静的データ メンバー
クラスをFrom.dll
定義するライブラリの次のソースを検討してください。From
ヘッダ:
実装:
このライブラリの静的メンバーstaticMember
は、次のTo
クラスから使用する必要があり、DLL ( To.dll
)も生成する必要があります。
ヘッダ:
実装:
しかし、それがVisual Studio上に直接あるか、それがcmakeで生成されたnmakeであるかに関係なくLNK2001: unresolved external symbol "public: static char const * const From::staticMember" (?staticMember@From@@2QBDB)
、リンクするときにこれを取得し続けます:To.dll
最初の DLL はコンパイルされ、問題なくリンクされています。以下は、私の CMakeLists.txt の関連部分です。
この静的データ メンバーをエクスポートするのに何が間違っていますか?
c++ - MS Visual C++ マルチスレッドで割り当てられた変数にアクセスすると、アクセス違反が発生する
MSVC 2013 でビルドされた MFC ダイアログ ベースのアプリケーションに問題があります。より複雑な機能の実行中にもメイン ダイアログにアクセスできるようにするために、マルチスレッドを使用しています。ダイアログ内のボタンをクリックすると、別のスレッドによって実行される「ワーカー関数」が呼び出されます。
クラスの抜粋を次に示します。
ボタンをクリックすると、StartSweepAndImageThread
それ自体が呼び出しSweepAndImageThreadProc
、最後にが呼び出されますDoSweepAndImage
。functionDoSweepAndImage
では、クラスの変数にアクセスします (読み取りと書き込み)。などがありimgs_name
ます。使用法は次のとおりです。
whileimgs_name
は次のように初期化されます
OnInitDialog
関数で。
問題は、私が受け取る言及ボタンを押すと
丁度上imgs_name[i] = str;
。CString *imgs_name;
I defineの代わりに静的配列を使用するCString imgs_name[4];
と、すべてがうまく機能します。CString
ただし、その変数を動的変数にしたいと考えています。よろしくお願いします。
PS: これをシリアルに評価したとき、つまりDoSweepAndImage
メイン スレッドで関数を実行したときは、すべてうまくいきました。そのため、アクセス違反はマルチスレッドが原因であると想定しています。
@Wimmel : ループオーバーi
はDoSweepAndImage
multithreading - コントロールを変更するための AfxBeginThread() PostMessage
listcontrol データを変更するためにメイン ダイアログに postmessage を送信する必要がある AfxBeginThread() を使用するプログラムがあります。
変更したいテキストと要素の変更テキストを渡す必要があるため、どうすればそれを達成できますか? どうすればいいですか?
debugging - MFC アプリで DEBUG_NEW を設定するとコンパイラ エラーが発生する理由
ここでは、MFC アプリで new の代わりに DEBUG_NEW を配置できることを示しています。そうすると、コンパイラは DEBUG_NEW が定義されていないと言います。VS 2017です。_DEBUGが定義されています。何が間違っている可能性がありますか?
[編集] 最初に、プロジェクト全体のグローバルな定義として配置したことに注意してください。何千ものエラーがありました (これは大きなプロジェクトです)。次に、1 つのオカレンスだけを変更しました。私のコードにあったもの。そして、それは機能していません。含まれていますが、直接ではありません