同じ実装を持つ多数のスタブ関数を含むC++テストプロジェクトがあります。これらのスタブは、WindowsDetoursを使用して実行時に「置換」されることを目的としています。問題は、リリースモードでは、コンパイラがこれらのスタブをすべて同じ実装を指すようにすることです。これを説明するために、次のコードについて考えてみます。
#include <iostream>
using namespace std;
void A() { cout << "stub" << endl; }
void B() { cout << "stub" << endl; }
void main()
{
cout << &A << ", " << &B << endl;
}
デバッグモードでは、ポインタ値は異なります。リリースモードでは、それらは同じです。プラグマ最適化ディレクティブを試しましたが(Microsoftコンパイラを使用しています)、問題は修正されませんでした。その結果、私のWindows Detoursフックは、同一のスタブへのすべての呼び出しをインターセプトします。
どうすればこれを修正できますか?ありがとう。