2016-09-12 3 views
0

32ビットアプリケーションがあり、32ビットのクロム埋め込みフレームワークを呼び出しています。32ビットアプリケーションからCEF3 64ビットを呼び出す

ここで、アプリケーションを64ビットにアップグレードすることはできないため、CEF3の64ビットプロセスを呼び出すことにします。

実装方法(IPCアーキテクチャがあると読んでいます)がありますが、私はサブプロセスを作成できたと言わなければなりませんが、レンダリングは表示されません(メインUIスレッドが応答していません)。

+0

Windowsで実行していますか? 64ビットモードでcefが必要な特別な理由はありますか? –

+0

はい私はWindows上で動作しています。 メモリ消費量が大きいため、64ビットが必要です – vovi

答えて

0

現在実装しようとしているアプリケーションモデルは、cef3ではサポートされていません。 64ビットのlibcef.dllにリンクされた64ビットのcefヘルパー実行ファイルがあっても、メインの実行可能ファイルにはかなりのcefアプリケーションコードが必要です。

原則として、32ビットのメインコードには32ビットのlibcef.dllが必要ですが、内部のIPCがおそらくプラットフォームに依存しないため、cefのヘルパープロセスと話すことができないと思われます。おそらくネイティブな整数などの共有メモリを使用していて互換性がなくなり、AFAIKにはそれを活用するフル機能のIPCコードはありません。

、ここで私はあなたがいた場合、私はかかるだろうパスされている問題は、メモリ消費され、あなたのfolllowアップを1として:

a)は(リンカに/ LARGEADDRESSAWAREを渡すことによって、32ビットの実行可能ファイルをリンクしようmsvcを使用していると仮定します)。これにより、32ビットプロセスで最大3GBのRAMをマップすることができます。また、cefフォーラムで検索すると、32ビットを使用していなくても問題に直面しているユーザーが非常に多くなります。 http://magpcss.org/ceforum/search.php?keywords=large+address)。私自身、32ビットの実行可能ファイルを持つデプロイされた製品を持っており、これまでのところメモリの問題に直面していませんでした。このオプションを使用しています。

b)これで十分でない場合は、ブラウザアプリケーションロジックを別の64ビット実行可能ファイルに移動して、アプリケーションとアプリケーションの間で独自のIPC形式を調理することをお勧めします。あなたのアプリケーションが必要とするものに応じて、アプリケーションのウィジェットにcefのメインウィンドウを貼り付けて、https://bitbucket.org/chromiumembedded/cef/wiki/JavaScriptIntegration.mdに記載されているような何かをするだけでも簡単ですが、それよりも複雑になる可能性があります。

上記のいずれかの解決策で動作するシナリオを作成した後でなければ、別のcefヘルパー実行可能ファイルを持っていると思うでしょう。主な用途は、アプリケーションを複数の(時には巨大な)DLLにリンクするのが一般的で、ヘルパーをlibcef.dll(およびc/C++ランタイム)のみにリンクするように減らすことができるためです。

32ビットシナリオでヘルパーを使用する場合は、/ LARGEADDRESSAWAREにリンクすることを忘れないでください。

関連する問題