Thursday, February 18, 2010

is not a valid Win32 application. (Exception from HRESULT: 0x800700C1)

מה קורה כשאתם עובדים בסביבת X64 ואתם מריצים פונקציות מ - dll חיצוני ואתם מקבלים את השגיאה (או משהו בסגנון)
is not a valid Win32 application. (Exception from HRESULT: 0x800700C1)

זה קורה בדרך כלל שאותו dll חיצוני מפעיל native code והוא לא יודע לרוץ בסביבת X64.

מה שאני עושה זה משהו כזה (טיפה עקום אבל הפיתרון הכי פשוט ומהיר)

כותב אפליקצייה Console Application נפרדת שתפעיל את אותם פונקציות - ומקמפל אותה ב - X86.

כעת באפליקצייה שלי (שחייבת כאמור לרוץ ב - X64) אני כותב כך:


var process = System.Diagnostics.Process.Start("process name", "args");
process.WaitForExit();

כעת - אני מפעיל את אותם פונקציות במוד X86 וכשהם מסיימים אני יכול להמשיך לרוץ.

כמובן שבמידה וזה לא סתם הפעלה של פונקציות שעושות משהו, אלא צריך לקבל תשובות ולפי זה להחליט מה לעשות,
מן הסתם צריך פתרון יותר מורכב כמו remoting וכד'.

Posted via email from jasper22's posterous