64 ビット コンピューターで実行されるアプリケーションを開発しています。
ただし、変更できない 32 ビット整数を持つライブラリを使用しています。また、64 ビット コンピューターでコンパイルして実行する必要があります。
アプリケーションが実行されている場合、どのような影響がありますか? 回避策はありますか?
アドバイスありがとうございました。
ライブラリのソースはありますか?もしそうなら、そしてあなたがそれを再コンパイルするなら、あなたはそれでうまくいくかもしれません(ライブラリのライターがx86-64のためにコンパイルするときに壊れた仮定をしなかった限り)。一生懸命テストし、長くテストします。
ソースがない場合(i386でコンパイルされたバイナリがある場合)、リンカはx86-64コードをソースにリンクすることさえできません。ABIには互換性がありません。
2番目のケースでは、32ビットライブラリにリンクする別の32ビットヘルパー/ラッパープロセスを作成し、IPCメカニズムを介して64ビットプロセスからライブラリを呼び出す要求を受け取る必要があります(結果を返します) )。ライブラリへの通常の呼び出しのように見えるように、IPCの周りの64ビット側でラッパー関数を作成できます。64ビットプロセスは、起動時に32ビットヘルパープロセスを開始する必要があります(そして、ヘルパープロセスが親プロセスが消えたときに終了することを認識していることを確認してください)。