2010-04-18 4 views
3

J'ai hérité d'une lib compilée en x32 et je ne peux pas la compiler en x64. Je pense que peut être d'envelopper la lib avec le processus x32, puis de l'exécuter en processus x64 en appelant à la fonction CreateProcess win api. puis j'utiliserai la mémoire partagée pour transférer les données entre les interfaces API lib x32 vers le processus x64.Quelle est la meilleure façon d'intégrer x32 lib avec le processus x64 (sans convertir la lib en x64)?

Est-ce que je manque quelque chose ici (son look est très compliqué)?

+0

Votre processus doit-il vraiment avoir 64 bits? –

+0

oui, j'ai besoin d'allocation de mémoire 3Gbyte – user294031

Répondre

2

Je pense que vous pourriez l'exposer comme serveur COM + 32 bits et le consommer depuis l'application 64 bits. Ce sera un processus séparé hébergé par OS. Il me semble beaucoup plus facile que la mémoire partagée etc. Juste idée, je n'ai jamais essayé.

+0

rien ........ – user294031

3

Ils répondent que vous ne pouvez pas le faire directement. Les processus sont soit 32 bits, soit 64 bits. Un processus 64 bits ne peut pas charger un code 32 bits.

Oui, vous devez exécuter le code 32 bits dans un processus 32 bits et utiliser un type d'interface entre celui-ci et votre processus 64 bits. En fonction de votre code, cela pourrait représenter beaucoup de travail. La meilleure façon de procéder est de placer votre code 32 bits dans un ensemble d'API COM et de l'exécuter en tant que serveur de proc COM pour votre processus 64 bits. COM fera ensuite tout le travail de marshaling information d'un processus à l'autre.

Peu importe ce que vous faites; Soyez parfaitement conscient qu'il y a BEAUCOUP de frais généraux pour le faire. La gestion des erreurs est une autre préoccupation importante. Je vous encourage à ne pas développer votre propre interface de mémoire partagée. Cela peut être assez difficile d'obtenir des correctifs, sauf si les interfaces sont vraiment simples. Vous pouvez également utiliser RPC directement: voir this link.

Questions connexes