Edge: x64 Windows์˜ node.js x64์—์„œ .NET์˜ ๊ธฐ๋ณธ x86 ์ฝ”๋“œ ํ˜ธ์ถœ

์— ๋งŒ๋“  2013๋…„ 04์›” 16์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: tjanczuk/edge

์•ˆ๋…•,

Windows x64์—์„œ node.js x64๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ edge.js์˜ .NET ์ฝ”๋“œ์—์„œ ๊ธฐ๋ณธ 32๋น„ํŠธ dll์„ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ฝ˜์†” .NET ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ด์ „ 32๋น„ํŠธ ๊ธฐ๋ณธ dll(DllImport ์‚ฌ์šฉ)์„ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ edge.js์™€ ๋™์ผํ•œ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด BadImageException์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. x86 .NET ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ํ˜ธ์ถœํ•˜๋ ค๊ณ  ํ•˜๋ฉด ๋™์ผํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

์ผ๋ถ€ ๋ ˆ๊ฑฐ์‹œ x86 ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— x86 node.js๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

๋˜ ๋‹ค๋ฅธ ์งˆ๋ฌธ, COM์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

IIS ๋…ธ๋“œ๋Š” x86 node.js๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๋‚ด ์•ฑ์˜ x64์— ๋Œ€ํ•œ ํŠน๋ณ„ํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์€ ์—†์Šต๋‹ˆ๋‹ค(๋ฌผ๋ก  x64 ๋ฒ„์ „์€ x64 ์‹œ์Šคํ…œ์—์„œ ๋” ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค). ๊ทธ๋ž˜์„œ x86 ๋ฒ„์ „์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ ์•„๋‹Œ๊ฐ€์š”?

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

+1 -- ์ง„์ „์ด ์žˆ์—ˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ํŠน์ • ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ์ฐจ๋ก€๋กœ 32๋น„ํŠธ ๋„ค์ดํ‹ฐ๋ธŒ C++ dll์„ ์ฐธ์กฐํ•˜๋Š” ํƒ€์‚ฌ .NET ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ํ˜ธ์ถœํ•˜๋ ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ชจ๋“  3 ๋Œ“๊ธ€

C(๋„ค์ดํ‹ฐ๋ธŒ dll)๋ฅผ ํ†ตํ•ด ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ ๋…ธ๋“œ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๋„ค์ดํ‹ฐ๋ธŒ ๋ชจ๋“ˆ/ํŒจํ‚ค์ง€๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒํ˜ธ ์ž‘์šฉ์ด ์–ผ๋งˆ๋‚˜ ๋ณต์žกํ•˜๊ณ  ํŒŒ์ดํ”„ ์ž…๋ ฅ/์ถœ๋ ฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์ค„ exe๋ฅผ ํ†ตํ•ด ๋…ธ์ถœ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋” ์ง์ ‘์ ์ผ ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ๋Œ€์•ˆ ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋‹ต๋ณ€ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” native.dll์„ ์‚ฌ์šฉํ•˜๋Š” .NET ๋…ผ๋ฆฌ๊ฐ€ ์žˆ์„ ๋•Œ .NET์˜ ๋ชจ๋“  ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๊ณ  JavaScript์—์„œ ํ•œ ๋ฒˆ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋‹ค๋ฅธ ๊ฒฝ์šฐ์—๋Š” ๋„ค์ดํ‹ฐ๋ธŒ dll์˜ ๋…ผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ผ๋ถ€ ๋…ผ๋ฆฌ๊ฐ€ ์žˆ๋Š” JavaScript ์ฝ”๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์„ ๋•Œ JavaScript์—์„œ ์ง์ ‘ ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

C#์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์„œ๋ช…์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‘ ๊ฐœ์˜ ๊ธฐ๋ณธ ํ•จ์ˆ˜๋ฅผ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.

[DllImport("library.dll")]
์ •์  extern int Func1(byte[] p1, ref int p2, byte[] p3, int p4);

dll-s https://github.com/rbranson/node-ffi ๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์œ„ํ•œ node.js ํŒจํ‚ค์ง€๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค
๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ์•„์ง ๊ทธ๊ฒƒ์„ ์‹œ๋„ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. node-ffi๋กœ ์ด๋Ÿฐ ์ข…๋ฅ˜์˜ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ์–ด๋ ต์Šต๋‹ˆ๊นŒ?

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ด์ง„ ํŒŒ์ผ์„ ๊ฐ€์ ธ์˜จ ๋‹ค์Œ ๊ธฐ๋ณธ dll์˜ ์ผ๋ถ€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๋””์ฝ”๋”ฉํ•˜๊ณ  ์„ ํƒ์ ์œผ๋กœ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•˜๊ณ  ๊ฒฐ๊ตญ ๋ธŒ๋ผ์šฐ์ €์— ์ด์ง„ ์ถœ๋ ฅ์œผ๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ƒ๊ฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. BTW ๋ˆ„๊ตฌ๋“ ์ง€ node.js์—์„œ ๋ฐ”์ด๋„ˆ๋ฆฌ ์ด๋ฏธ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ข‹์€ node.js ํŒจํ‚ค์ง€๋ฅผ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

+1 -- ์ง„์ „์ด ์žˆ์—ˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ํŠน์ • ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ์ฐจ๋ก€๋กœ 32๋น„ํŠธ ๋„ค์ดํ‹ฐ๋ธŒ C++ dll์„ ์ฐธ์กฐํ•˜๋Š” ํƒ€์‚ฌ .NET ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ํ˜ธ์ถœํ•˜๋ ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰

๊ด€๋ จ ๋ฌธ์ œ

tdupuy17 picture tdupuy17  ยท  6์ฝ”๋ฉ˜ํŠธ

harivasista picture harivasista  ยท  5์ฝ”๋ฉ˜ํŠธ

NickStrupat picture NickStrupat  ยท  11์ฝ”๋ฉ˜ํŠธ

sz30313484 picture sz30313484  ยท  7์ฝ”๋ฉ˜ํŠธ

lstratman picture lstratman  ยท  17์ฝ”๋ฉ˜ํŠธ