情報
次の警告:
LINK : warning LNK4039: section '.SHARED' specified with /SECTION option does not exist
C++ でダイナミック リンク ライブラリのデータ セグメントにベクトルを格納しようとすると常に発生します。
例:
#include <vector>
struct Obj {
unsigned int A;
unsigned int B;
bool C;
std::vector< unsigned char > D;
};
#pragma data_seg( ".SHARED" )
std::vector< Obj > Objects;
#pragma data_seg()
#pragma comment ( linker,"/section:.SHARED,RWS" )
ただし、単純な変数を格納しようとすると、コンパイル時に警告は表示されません。このような:
#pragma data_seg (".SHARED" )
int SimpleVariable = 0;
#pragma data_seg()
私は絶対に肯定的ではありませんが、ベクトルを初期化していないために警告が発生したと思いますか? もしそうなら、データ セグメント内に格納されるベクトルをどのように初期化できますか?
もう 1 つ質問があります。ベクトルを DLL 内のデータ セグメントに格納するのはひどい考えですか?
私の目標
複数の異なるプロセスにロードされる DLL 内でベクターのコンテンツを共有しようとしています。
このような:
process_1.exe
- example.dll -| * access the same vector (SomeVector) as
| example.dll within process_2
|
std::vector SomeVector; // vector in example.dll
|
process_2.exe | * access the same vector (SomeVector) as
| example.dll within process_1
- example.dll -|