次の方法で共有


リンカー ツール エラー LNK2004

gp 相対 fixup の 'target' へのオーバーフローです。ショート セクション 'section' が大きすぎるか、範囲を超えています。

セクションが大きすぎます。

このエラーを解決するには、ショート セクションのサイズを小さくします。そのためには、#pragma セクション (".sectionname"、read、write、long) を介してロング セクションにデータを明示的に配置し、データ定義と宣言で __declspec(allocate(".sectionname")) を使用します。 たとえば、 にします。

#pragma section(".data$mylong", read, write, long)
__declspec(allocate(".data$mylong"))
char    rg0[1] = { 1 };
char    rg1[2] = { 1 };
char    rg2[4] = { 1 };
char    rg3[8] = { 1 };
char    rg4[16] = { 1 };
char    rg5[32] = { 1 };

また、論理的にグループ化されたデータを、8 バイトを超えるデータのコレクションとなる独自の構造に移動することもできます。この場合、コンパイラはロング データ セクションで割り当てます。 たとえば、 にします。

// from this...
int     w1  = 23;
int     w2 = 46;
int     w3 = 23*3;
int     w4 = 23*4;

// to this...
struct X {
    int     w1;
    int     w2;
    int     w3;
    int     w4;
} x  = { 23, 23*2, 23*3, 23*4 };

このエラーの後に、致命的なエラー LNK1165 が発生します。