<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: How can LoadDLL a 32-bit DLL through JSL? in Discussions</title>
    <link>https://community.jmp.com/t5/Discussions/How-can-LoadDLL-a-32-bit-DLL-through-JSL/m-p/824593#M100423</link>
    <description>&lt;P&gt;&lt;A href="https://www.jmp.com/support/help/en/18.0/#page/jmp/dynamic-link-libraries-dlls.shtml#ww247178" target="_blank" rel="noopener"&gt; Scripting Guide &amp;gt; Extending JMP &amp;gt; Dynamic Link Libraries (DLLs)&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P class="Note"&gt;&lt;SPAN class="Note"&gt;Note: &lt;/SPAN&gt;64-bit JMP cannot load 32-bit DLLs. You must recompile a 32-bit DLL for JMP to be able to load it.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;</description>
    <pubDate>Fri, 20 Dec 2024 08:32:29 GMT</pubDate>
    <dc:creator>jthi</dc:creator>
    <dc:date>2024-12-20T08:32:29Z</dc:date>
    <item>
      <title>How can LoadDLL a 32-bit DLL through JSL?</title>
      <link>https://community.jmp.com/t5/Discussions/How-can-LoadDLL-a-32-bit-DLL-through-JSL/m-p/824581#M100421</link>
      <description>&lt;P&gt;My operating system is 64-bit Windows 10.One software, HailiLive.EXE, is still 32-bit.There is Drv.dll;&lt;BR /&gt;How can I use JSL of 64-bit JMP software to call the 32 bit Drv.dll of this software HailiLive.EXE?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks Experts!&lt;/P&gt;</description>
      <pubDate>Fri, 20 Dec 2024 07:27:39 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/How-can-LoadDLL-a-32-bit-DLL-through-JSL/m-p/824581#M100421</guid>
      <dc:creator>lala</dc:creator>
      <dc:date>2024-12-20T07:27:39Z</dc:date>
    </item>
    <item>
      <title>Re: How can LoadDLL a 32-bit DLL through JSL?</title>
      <link>https://community.jmp.com/t5/Discussions/How-can-LoadDLL-a-32-bit-DLL-through-JSL/m-p/824592#M100422</link>
      <description>&lt;P&gt;&lt;SPAN&gt;A message is displayed:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Access or Assign,LoadDLL = /*###*/Load DLL("I:\HailiLive\Drv.dll") /*###*/ evaluation "cannot load external dll" I:\HailiLive\Drv.dll".%1 is not a valid Win32 application.&lt;/P&gt;</description>
      <pubDate>Fri, 20 Dec 2024 07:46:28 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/How-can-LoadDLL-a-32-bit-DLL-through-JSL/m-p/824592#M100422</guid>
      <dc:creator>lala</dc:creator>
      <dc:date>2024-12-20T07:46:28Z</dc:date>
    </item>
    <item>
      <title>Re: How can LoadDLL a 32-bit DLL through JSL?</title>
      <link>https://community.jmp.com/t5/Discussions/How-can-LoadDLL-a-32-bit-DLL-through-JSL/m-p/824593#M100423</link>
      <description>&lt;P&gt;&lt;A href="https://www.jmp.com/support/help/en/18.0/#page/jmp/dynamic-link-libraries-dlls.shtml#ww247178" target="_blank" rel="noopener"&gt; Scripting Guide &amp;gt; Extending JMP &amp;gt; Dynamic Link Libraries (DLLs)&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P class="Note"&gt;&lt;SPAN class="Note"&gt;Note: &lt;/SPAN&gt;64-bit JMP cannot load 32-bit DLLs. You must recompile a 32-bit DLL for JMP to be able to load it.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;</description>
      <pubDate>Fri, 20 Dec 2024 08:32:29 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/How-can-LoadDLL-a-32-bit-DLL-through-JSL/m-p/824593#M100423</guid>
      <dc:creator>jthi</dc:creator>
      <dc:date>2024-12-20T08:32:29Z</dc:date>
    </item>
    <item>
      <title>Re: How can LoadDLL a 32-bit DLL through JSL?</title>
      <link>https://community.jmp.com/t5/Discussions/How-can-LoadDLL-a-32-bit-DLL-through-JSL/m-p/824594#M100424</link>
      <description>&lt;P&gt;OK&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;Note:&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;64-bit JMP cannot load 32-bit DLLs. You must recompile a 32-bit DLL for JMP to be able to load it.&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 20 Dec 2024 08:58:52 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/How-can-LoadDLL-a-32-bit-DLL-through-JSL/m-p/824594#M100424</guid>
      <dc:creator>lala</dc:creator>
      <dc:date>2024-12-20T08:58:52Z</dc:date>
    </item>
    <item>
      <title>Re: How can LoadDLL a 32-bit DLL through JSL?</title>
      <link>https://community.jmp.com/t5/Discussions/How-can-LoadDLL-a-32-bit-DLL-through-JSL/m-p/886365#M104879</link>
      <description>&lt;P&gt;32bit 14.3JMP&lt;/P&gt;
&lt;P&gt;OK&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="2025-07-11_15-46-29.png" style="width: 642px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/78084i4BF8C9CDF0A73E4F/image-size/large?v=v2&amp;amp;px=999" role="button" title="2025-07-11_15-46-29.png" alt="2025-07-11_15-46-29.png" /&gt;&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 11 Jul 2025 07:55:57 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/How-can-LoadDLL-a-32-bit-DLL-through-JSL/m-p/886365#M104879</guid>
      <dc:creator>lala</dc:creator>
      <dc:date>2025-07-11T07:55:57Z</dc:date>
    </item>
    <item>
      <title>Re: How can LoadDLL a 32-bit DLL through JSL?</title>
      <link>https://community.jmp.com/t5/Discussions/How-can-LoadDLL-a-32-bit-DLL-through-JSL/m-p/886902#M104938</link>
      <description>&lt;P&gt;There is a COM solution to the issue of loading a 32-bit DLL into a 64-bit application. &amp;nbsp;JMP's JSL supports COM Automation on Windows. &amp;nbsp;However, this would be a lot of work to wrapper the DLL using COM.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;My Google Search:&lt;/P&gt;
&lt;P&gt;using COM to marshal a 32-bit dll for a 64-bit application&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;AI response:&lt;/P&gt;
&lt;DIV class="WaaZC"&gt;
&lt;DIV class="RJPOee EIJn2"&gt;
&lt;DIV class="rPeykc" data-hveid="CAMQAQ" data-ved="2ahUKEwjkgsX3976OAxUaKVkFHbwjBCcQo_EKegQIAxAB"&gt;&lt;SPAN data-huuid="10915188342459363535"&gt;To call a 32-bit DLL from a 64-bit application, you need to &lt;MARK class="QVRyCf"&gt;use COM (Component Object Model) in an out-of-process server setup&lt;/MARK&gt;. &lt;/SPAN&gt;&lt;SPAN data-huuid="10915188342459364602"&gt;This involves creating a separate 32-bit COM server application that acts as a wrapper for the 32-bit DLL. &lt;/SPAN&gt;&lt;SPAN data-huuid="10915188342459365669"&gt;The 64-bit application can then communicate with this server through COM's inter-process communication mechanisms.&lt;SPAN class="pjBG2e" data-cid="16757224-d8e5-40f2-b6e2-a08e9f8a8722"&gt;&lt;SPAN class="UV3uM"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;DIV class="NPrrbc" data-cid="16757224-d8e5-40f2-b6e2-a08e9f8a8722" data-uuids="10915188342459363535,10915188342459364602,10915188342459365669"&gt;
&lt;DIV class="BMebGe btku5b fCrZyc LwdV0e FR7ZSc qVhvac OJeuxf" tabindex="0" role="button" aria-label="View related links" data-hveid="CAUQAQ" data-ved="2ahUKEwjkgsX3976OAxUaKVkFHbwjBCcQ3fYKegQIBRAB"&gt;
&lt;DIV class="niO4u"&gt;
&lt;DIV class="kHtcsd"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class="WaaZC"&gt;
&lt;DIV class="RJPOee EIJn2"&gt;
&lt;DIV class="rPeykc" data-hveid="CAwQAQ" data-ved="2ahUKEwjkgsX3976OAxUaKVkFHbwjBCcQo_EKegQIDBAB"&gt;&lt;SPAN data-huuid="5058785562405077849"&gt;Here's a breakdown of the process:&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class="WaaZC"&gt;
&lt;DIV class="RJPOee EIJn2"&gt;
&lt;DIV class="rPeykc pyPiTc" data-hveid="CA0QAQ" data-ved="2ahUKEwjkgsX3976OAxUaKVkFHbwjBCcQo_EKegQIDRAB"&gt;&lt;SPAN data-huuid="5058785562405078187"&gt;1. Create a 32-bit COM Server Application:&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class="WaaZC"&gt;
&lt;DIV class="RJPOee EIJn2"&gt;
&lt;UL data-hveid="CB0QAQ" data-ved="2ahUKEwjkgsX3976OAxUaKVkFHbwjBCcQm_YKegQIHRAB"&gt;
&lt;LI class="K3KsMc"&gt;
&lt;DIV class="zMgcWd dSKvsb" data-il=""&gt;
&lt;DIV data-crb-p=""&gt;
&lt;DIV class="xFTqob"&gt;
&lt;DIV class="Gur8Ad"&gt;&lt;SPAN data-huuid="5058785562405080742"&gt;&lt;STRONG&gt;New ATL Project:&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="vM0jzc"&gt;&lt;SPAN data-huuid="5058785562405078863"&gt;Create a new ATL (Active Template Library) project in Visual Studio, specifically configured as an executable (not a DLL).&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/LI&gt;
&lt;LI class="K3KsMc"&gt;
&lt;DIV class="zMgcWd dSKvsb" data-il=""&gt;
&lt;DIV data-crb-p=""&gt;
&lt;DIV class="xFTqob"&gt;
&lt;DIV class="Gur8Ad"&gt;&lt;SPAN data-huuid="5058785562405079201"&gt;&lt;STRONG&gt;Add ATL Simple Object:&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="vM0jzc"&gt;&lt;SPAN data-huuid="5058785562405077322"&gt;Add a new ATL Simple Object to the project. &lt;/SPAN&gt;&lt;SPAN data-huuid="5058785562405079539"&gt;This will be the core of your COM server.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/LI&gt;
&lt;LI class="K3KsMc"&gt;
&lt;DIV class="zMgcWd dSKvsb" data-il=""&gt;
&lt;DIV data-crb-p=""&gt;
&lt;DIV class="xFTqob"&gt;
&lt;DIV class="Gur8Ad"&gt;&lt;SPAN data-huuid="5058785562405079877"&gt;&lt;STRONG&gt;Implement Interfaces:&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="vM0jzc"&gt;&lt;SPAN data-huuid="5058785562405077998"&gt;Define the interfaces (using .idl files) that the 64-bit application will use to interact with the 32-bit DLL.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/LI&gt;
&lt;LI class="K3KsMc"&gt;
&lt;DIV class="zMgcWd dSKvsb" data-il=""&gt;
&lt;DIV data-crb-p=""&gt;
&lt;DIV class="xFTqob"&gt;
&lt;DIV class="Gur8Ad"&gt;&lt;SPAN data-huuid="5058785562405078336"&gt;&lt;STRONG&gt;Forward Calls:&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="vM0jzc"&gt;&lt;SPAN data-huuid="5058785562405080553"&gt;Within the COM object's methods, forward the calls to the corresponding functions in the 32-bit DLL. &lt;/SPAN&gt;&lt;SPAN data-huuid="5058785562405078674"&gt;This may involve marshalling data between the two processes.&lt;SPAN class="pjBG2e" data-cid="4420c4f9-7976-4608-9d5a-706eefc78b33"&gt;&lt;SPAN class="UV3uM"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;DIV class="NPrrbc" data-cid="4420c4f9-7976-4608-9d5a-706eefc78b33" data-uuids="5058785562405080742,5058785562405078863,5058785562405079201,5058785562405077322,5058785562405079539,5058785562405079877,5058785562405077998,5058785562405078336,5058785562405080553,5058785562405078674"&gt;
&lt;DIV class="BMebGe btku5b fCrZyc LwdV0e FR7ZSc qVhvac OJeuxf" tabindex="0" role="button" aria-label="View related links" data-hveid="CBgQAQ" data-ved="2ahUKEwjkgsX3976OAxUaKVkFHbwjBCcQ3fYKegQIGBAB"&gt;
&lt;DIV class="niO4u"&gt;
&lt;DIV class="kHtcsd"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class="WaaZC"&gt;
&lt;DIV class="RJPOee EIJn2"&gt;
&lt;DIV class="rPeykc pyPiTc" data-hveid="CCQQAQ" data-ved="2ahUKEwjkgsX3976OAxUaKVkFHbwjBCcQo_EKegQIJBAB"&gt;&lt;SPAN data-huuid="8976142195259843915"&gt;2. Register the COM Server:&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class="WaaZC"&gt;
&lt;DIV class="RJPOee EIJn2"&gt;
&lt;UL data-hveid="CC4QAQ" data-ved="2ahUKEwjkgsX3976OAxUaKVkFHbwjBCcQm_YKegQILhAB"&gt;
&lt;LI class="K3KsMc"&gt;
&lt;DIV class="zMgcWd dSKvsb" data-il=""&gt;
&lt;DIV data-crb-p=""&gt;
&lt;DIV class="xFTqob"&gt;
&lt;DIV class="Gur8Ad"&gt;&lt;SPAN data-huuid="8976142195259846304"&gt;&lt;STRONG&gt;&lt;A class="DTlJ6d" href="https://www.google.com/search?client=safari&amp;amp;cs=0&amp;amp;sca_esv=0f3f3d91d2ee70a0&amp;amp;q=DllSurrogate&amp;amp;sa=X&amp;amp;ved=2ahUKEwjkgsX3976OAxUaKVkFHbwjBCcQxccNegQIJRAB&amp;amp;mstk=AUtExfAmS5Wn7zHa9wRx5yro75HmU26xtHmCnEAvXtSEYBdq0rBreD4gCC0GPwE816dM5u3uveDv1DHqN_GhRfY2AQfruX7NJnBxD7ipRa2xzGfV1lTtUAIAmj25CkgK5H575cE&amp;amp;csui=3" target="_blank" rel="noopener" data-hveid="CCUQAQ"&gt;DllSurrogate&lt;/A&gt;:&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="vM0jzc"&gt;&lt;SPAN data-huuid="8976142195259845735"&gt;You'll need to register the COM server using &lt;SPAN class="M5tQyf"&gt;&lt;A class="DTlJ6d" href="https://www.google.com/search?client=safari&amp;amp;cs=0&amp;amp;sca_esv=0f3f3d91d2ee70a0&amp;amp;q=DllSurrogate&amp;amp;sa=X&amp;amp;ved=2ahUKEwjkgsX3976OAxUaKVkFHbwjBCcQxccNegQIJhAB&amp;amp;mstk=AUtExfAmS5Wn7zHa9wRx5yro75HmU26xtHmCnEAvXtSEYBdq0rBreD4gCC0GPwE816dM5u3uveDv1DHqN_GhRfY2AQfruX7NJnBxD7ipRa2xzGfV1lTtUAIAmj25CkgK5H575cE&amp;amp;csui=3" target="_blank" rel="noopener" data-hveid="CCYQAQ"&gt;DllSurrogate&lt;/A&gt;.&lt;/SPAN&gt; &lt;/SPAN&gt;&lt;SPAN data-huuid="8976142195259845166"&gt;This allows the 64-bit process to instantiate the 32-bit COM object out-of-process.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/LI&gt;
&lt;LI class="K3KsMc"&gt;
&lt;DIV class="zMgcWd dSKvsb" data-il=""&gt;
&lt;DIV data-crb-p=""&gt;
&lt;DIV class="xFTqob"&gt;
&lt;DIV class="Gur8Ad"&gt;&lt;SPAN data-huuid="8976142195259844028"&gt;&lt;STRONG&gt;Registry Entries:&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="vM0jzc"&gt;&lt;SPAN data-huuid="8976142195259843459"&gt;Ensure the necessary registry entries are created to allow the 32-bit in-process server to be loaded by the system's DllSurrogate.&lt;SPAN class="pjBG2e" data-cid="890fab3e-4e70-4f51-b3d7-0c06b12abaee"&gt;&lt;SPAN class="UV3uM"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;DIV class="NPrrbc" data-cid="890fab3e-4e70-4f51-b3d7-0c06b12abaee" data-uuids="8976142195259846304,8976142195259845735,8976142195259845166,8976142195259844028,8976142195259843459"&gt;
&lt;DIV class="BMebGe btku5b fCrZyc LwdV0e FR7ZSc qVhvac OJeuxf" tabindex="0" role="button" aria-label="View related links" data-hveid="CCkQAQ" data-ved="2ahUKEwjkgsX3976OAxUaKVkFHbwjBCcQ3fYKegQIKRAB"&gt;
&lt;DIV class="niO4u"&gt;
&lt;DIV class="kHtcsd"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class="WaaZC"&gt;
&lt;DIV class="RJPOee EIJn2"&gt;
&lt;DIV class="rPeykc pyPiTc" data-hveid="CDMQAQ" data-ved="2ahUKEwjkgsX3976OAxUaKVkFHbwjBCcQo_EKegQIMxAB"&gt;&lt;SPAN data-huuid="17669264641683511531"&gt;3. Consume the COM Server in the 64-bit Application:&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class="WaaZC"&gt;
&lt;DIV class="RJPOee EIJn2"&gt;
&lt;UL data-hveid="CDQQAQ" data-ved="2ahUKEwjkgsX3976OAxUaKVkFHbwjBCcQm_YKegQINBAB"&gt;
&lt;LI class="K3KsMc"&gt;
&lt;DIV class="zMgcWd dSKvsb" data-il=""&gt;
&lt;DIV data-crb-p=""&gt;
&lt;DIV class="xFTqob"&gt;
&lt;DIV class="Gur8Ad"&gt;&lt;SPAN data-huuid="17669264641683509630"&gt;&lt;STRONG&gt;Create a COM Client:&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;A class="H62xKc" tabindex="0" role="button" href="https://www.google.com/search?client=safari&amp;amp;cs=0&amp;amp;sca_esv=0f3f3d91d2ee70a0&amp;amp;q=Create+a+COM+Client&amp;amp;sa=X&amp;amp;ved=2ahUKEwjkgsX3976OAxUaKVkFHbwjBCcQxccNegQINxAD&amp;amp;mstk=AUtExfAmS5Wn7zHa9wRx5yro75HmU26xtHmCnEAvXtSEYBdq0rBreD4gCC0GPwE816dM5u3uveDv1DHqN_GhRfY2AQfruX7NJnBxD7ipRa2xzGfV1lTtUAIAmj25CkgK5H575cE&amp;amp;csui=3" target="_blank" rel="noopener" data-hveid="CDcQAw"&gt;&lt;SPAN class="iwY1Mb"&gt;. &lt;/SPAN&gt;&lt;/A&gt;
&lt;DIV class="vM0jzc"&gt;&lt;SPAN data-huuid="17669264641683511727"&gt;In your 64-bit application, create a COM client that connects to the 32-bit COM server. &lt;/SPAN&gt;&lt;SPAN data-huuid="17669264641683509728"&gt;You will use the COM interfaces defined in the .idl file.&lt;SPAN class="pjBG2e" data-cid="81a8ed3c-3ac4-42f3-bca6-57a0b72a9de6"&gt;&lt;SPAN class="UV3uM"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;DIV class="NPrrbc" data-cid="81a8ed3c-3ac4-42f3-bca6-57a0b72a9de6" data-uuids="17669264641683509630,17669264641683511727,17669264641683509728"&gt;
&lt;DIV class="BMebGe btku5b fCrZyc LwdV0e FR7ZSc qVhvac OJeuxf" tabindex="0" role="button" aria-label="View related links" data-hveid="CD0QAQ" data-ved="2ahUKEwjkgsX3976OAxUaKVkFHbwjBCcQ3fYKegQIPRAB"&gt;
&lt;DIV class="niO4u"&gt;
&lt;DIV class="kHtcsd"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/LI&gt;
&lt;LI class="K3KsMc"&gt;
&lt;DIV class="zMgcWd dSKvsb" data-il=""&gt;
&lt;DIV data-crb-p=""&gt;
&lt;DIV class="xFTqob"&gt;
&lt;DIV class="Gur8Ad"&gt;&lt;SPAN data-huuid="17669264641683509826"&gt;&lt;STRONG&gt;Inter-process Communication:&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;A class="H62xKc" tabindex="0" role="button" href="https://www.google.com/search?client=safari&amp;amp;cs=0&amp;amp;sca_esv=0f3f3d91d2ee70a0&amp;amp;q=Inter-process+Communication&amp;amp;sa=X&amp;amp;ved=2ahUKEwjkgsX3976OAxUaKVkFHbwjBCcQxccNegQIORAD&amp;amp;mstk=AUtExfAmS5Wn7zHa9wRx5yro75HmU26xtHmCnEAvXtSEYBdq0rBreD4gCC0GPwE816dM5u3uveDv1DHqN_GhRfY2AQfruX7NJnBxD7ipRa2xzGfV1lTtUAIAmj25CkgK5H575cE&amp;amp;csui=3" target="_blank" rel="noopener" data-hveid="CDkQAw"&gt;&lt;SPAN class="iwY1Mb"&gt;. &lt;/SPAN&gt;&lt;/A&gt;
&lt;DIV class="vM0jzc"&gt;&lt;SPAN data-huuid="17669264641683511923"&gt;COM handles the inter-process communication, marshalling data between the 64-bit and 32-bit processes.&lt;SPAN class="pjBG2e" data-cid="1eacaaf2-d49d-421f-962c-0e19a408f2c2"&gt;&lt;SPAN class="UV3uM"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;DIV class="NPrrbc" data-cid="1eacaaf2-d49d-421f-962c-0e19a408f2c2" data-uuids="17669264641683509826,17669264641683511923"&gt;
&lt;DIV class="BMebGe btku5b fCrZyc LwdV0e FR7ZSc qVhvac OJeuxf" tabindex="0" role="button" aria-label="View related links" data-hveid="CDwQAQ" data-ved="2ahUKEwjkgsX3976OAxUaKVkFHbwjBCcQ3fYKegQIPBAB"&gt;
&lt;DIV class="niO4u"&gt;
&lt;DIV class="kHtcsd"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class="WaaZC"&gt;
&lt;DIV class="RJPOee EIJn2"&gt;
&lt;DIV class="rPeykc pyPiTc" data-hveid="CEcQAQ" data-ved="2ahUKEwjkgsX3976OAxUaKVkFHbwjBCcQo_EKegQIRxAB"&gt;&lt;SPAN data-huuid="15210638986903867438"&gt;Key Considerations:&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class="WaaZC"&gt;
&lt;DIV class="RJPOee EIJn2"&gt;
&lt;UL data-hveid="CF0QAQ" data-ved="2ahUKEwjkgsX3976OAxUaKVkFHbwjBCcQm_YKegQIXRAB"&gt;
&lt;LI class="K3KsMc"&gt;
&lt;DIV class="zMgcWd dSKvsb" data-il=""&gt;
&lt;DIV data-crb-p=""&gt;
&lt;DIV class="xFTqob"&gt;
&lt;DIV class="Gur8Ad"&gt;&lt;SPAN data-huuid="15210638986903870985"&gt;&lt;STRONG&gt;Interface Definitions:&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="vM0jzc"&gt;&lt;SPAN data-huuid="15210638986903870802"&gt;Ensure the interfaces defined in the 64-bit application's COM client and the 32-bit server are compatible, including data types and method signatures. &lt;/SPAN&gt;&lt;SPAN data-huuid="15210638986903870619"&gt;Consider using &lt;A class="DTlJ6d" href="https://www.google.com/search?client=safari&amp;amp;cs=0&amp;amp;sca_esv=0f3f3d91d2ee70a0&amp;amp;q=IDL+%28Interface+Definition+Language%29&amp;amp;sa=X&amp;amp;ved=2ahUKEwjkgsX3976OAxUaKVkFHbwjBCcQxccNegQIUhAB&amp;amp;mstk=AUtExfAmS5Wn7zHa9wRx5yro75HmU26xtHmCnEAvXtSEYBdq0rBreD4gCC0GPwE816dM5u3uveDv1DHqN_GhRfY2AQfruX7NJnBxD7ipRa2xzGfV1lTtUAIAmj25CkgK5H575cE&amp;amp;csui=3" target="_blank" rel="noopener" data-hveid="CFIQAQ"&gt;IDL (Interface Definition Language)&lt;/A&gt; to define the interfaces.&lt;SPAN class="pjBG2e" data-cid="000b1823-2184-40e3-a535-cc779a2015fb"&gt;&lt;SPAN class="UV3uM"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;DIV class="NPrrbc" data-cid="000b1823-2184-40e3-a535-cc779a2015fb" data-uuids="15210638986903870985,15210638986903870802,15210638986903870619"&gt;
&lt;DIV class="BMebGe btku5b fCrZyc LwdV0e FR7ZSc qVhvac OJeuxf" tabindex="0" role="button" aria-label="View related links" data-hveid="CFIQAg" data-ved="2ahUKEwjkgsX3976OAxUaKVkFHbwjBCcQ3fYKegQIUhAC"&gt;
&lt;DIV class="niO4u"&gt;
&lt;DIV class="kHtcsd"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/LI&gt;
&lt;LI class="K3KsMc"&gt;
&lt;DIV class="zMgcWd dSKvsb" data-il=""&gt;
&lt;DIV data-crb-p=""&gt;
&lt;DIV class="xFTqob"&gt;
&lt;DIV class="Gur8Ad"&gt;&lt;SPAN data-huuid="15210638986903870253"&gt;&lt;STRONG&gt;Marshalling:&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="vM0jzc"&gt;&lt;SPAN data-huuid="15210638986903870070"&gt;COM handles the marshalling of data between the two processes. &lt;/SPAN&gt;&lt;SPAN data-huuid="15210638986903869887"&gt;If you have complex data structures, you may need to explicitly marshal them using the Marshal class or &lt;SPAN class="M5tQyf"&gt;&lt;A class="DTlJ6d" href="https://www.google.com/search?client=safari&amp;amp;cs=0&amp;amp;sca_esv=0f3f3d91d2ee70a0&amp;amp;q=MarshalAsAttribute&amp;amp;sa=X&amp;amp;ved=2ahUKEwjkgsX3976OAxUaKVkFHbwjBCcQxccNegQIVxAB&amp;amp;mstk=AUtExfAmS5Wn7zHa9wRx5yro75HmU26xtHmCnEAvXtSEYBdq0rBreD4gCC0GPwE816dM5u3uveDv1DHqN_GhRfY2AQfruX7NJnBxD7ipRa2xzGfV1lTtUAIAmj25CkgK5H575cE&amp;amp;csui=3" target="_blank" rel="noopener" data-hveid="CFcQAQ"&gt;MarshalAsAttribute&lt;/A&gt;,&lt;/SPAN&gt; &lt;A class="uVhVib" href="https://learn.microsoft.com/en-us/dotnet/framework/interop/marshalling-data-with-platform-invoke" data-sb="/url?sa=t&amp;amp;source=web&amp;amp;rct=j&amp;amp;opi=89978449&amp;amp;url=https://learn.microsoft.com/en-us/dotnet/framework/interop/marshalling-data-with-platform-invoke&amp;amp;ved=2ahUKEwjkgsX3976OAxUaKVkFHbwjBCcQjJEMegQIVxAC&amp;amp;usg=AOvVaw15R-GaxR30wpKnws6rzAnX" target="_blank"&gt;according to Learn Microsoft&lt;/A&gt;.&lt;SPAN class="pjBG2e" data-cid="3f59feda-9346-41ed-afef-782e2eb39a71"&gt;&lt;SPAN class="UV3uM"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;DIV class="NPrrbc" data-cid="3f59feda-9346-41ed-afef-782e2eb39a71" data-uuids="15210638986903870253,15210638986903870070,15210638986903869887"&gt;
&lt;DIV class="BMebGe btku5b fCrZyc LwdV0e FR7ZSc qVhvac OJeuxf" tabindex="0" role="button" aria-label="View related links" data-hveid="CFcQAw" data-ved="2ahUKEwjkgsX3976OAxUaKVkFHbwjBCcQ3fYKegQIVxAD"&gt;
&lt;DIV class="niO4u"&gt;
&lt;DIV class="kHtcsd"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/LI&gt;
&lt;LI class="K3KsMc"&gt;
&lt;DIV class="zMgcWd dSKvsb" data-il=""&gt;
&lt;DIV data-crb-p=""&gt;
&lt;DIV class="xFTqob"&gt;
&lt;DIV class="Gur8Ad"&gt;&lt;SPAN data-huuid="15210638986903869521"&gt;&lt;STRONG&gt;Performance:&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="vM0jzc"&gt;&lt;SPAN data-huuid="15210638986903869338"&gt;While COM provides inter-process communication, it introduces overhead. &lt;/SPAN&gt;&lt;SPAN data-huuid="15210638986903869155"&gt;For performance-critical applications, consider the impact of this overhead.&lt;SPAN class="pjBG2e" data-cid="8756b7cb-2589-4ae3-9a4d-37f36e10400b"&gt;&lt;SPAN class="UV3uM"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;DIV class="NPrrbc" data-cid="8756b7cb-2589-4ae3-9a4d-37f36e10400b" data-uuids="15210638986903869521,15210638986903869338,15210638986903869155"&gt;
&lt;DIV class="BMebGe btku5b fCrZyc LwdV0e FR7ZSc qVhvac OJeuxf" tabindex="0" role="button" aria-label="View related links" data-hveid="CFkQAQ" data-ved="2ahUKEwjkgsX3976OAxUaKVkFHbwjBCcQ3fYKegQIWRAB"&gt;
&lt;DIV class="niO4u"&gt;
&lt;DIV class="kHtcsd"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/LI&gt;
&lt;LI class="K3KsMc"&gt;
&lt;DIV class="zMgcWd dSKvsb" data-il=""&gt;
&lt;DIV data-crb-p=""&gt;
&lt;DIV class="xFTqob"&gt;
&lt;DIV class="Gur8Ad"&gt;&lt;SPAN data-huuid="15210638986903868789"&gt;&lt;STRONG&gt;Alternatives:&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class="vM0jzc"&gt;&lt;SPAN data-huuid="15210638986903868606"&gt;If recompiling the 32-bit DLL is an option, that is generally the preferred approach, &lt;A class="uVhVib" href="https://stackoverflow.com/questions/52601470/calling-a-function-of-a-32-bit-dll-from-a-64-bit-application" data-sb="/url?sa=t&amp;amp;source=web&amp;amp;rct=j&amp;amp;opi=89978449&amp;amp;url=https://stackoverflow.com/questions/52601470/calling-a-function-of-a-32-bit-dll-from-a-64-bit-application&amp;amp;ved=2ahUKEwjkgsX3976OAxUaKVkFHbwjBCcQjJEMegQIVhAB&amp;amp;usg=AOvVaw1CDNcRQP8dA6tomRYWuT1_" target="_blank"&gt;according to Stack Overflow&lt;/A&gt;.&lt;SPAN class="pjBG2e" data-cid="ac8f1cad-caa2-491a-bf66-3bc59b531f03"&gt;&lt;SPAN class="UV3uM"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;DIV class="NPrrbc" data-cid="ac8f1cad-caa2-491a-bf66-3bc59b531f03" data-uuids="15210638986903868789,15210638986903868606"&gt;
&lt;DIV class="BMebGe btku5b fCrZyc LwdV0e FR7ZSc qVhvac OJeuxf" tabindex="0" role="button" aria-label="View related links" data-hveid="CFYQAg" data-ved="2ahUKEwjkgsX3976OAxUaKVkFHbwjBCcQ3fYKegQIVhAC"&gt;
&lt;DIV class="niO4u"&gt;
&lt;DIV class="kHtcsd"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class="WaaZC"&gt;
&lt;DIV class="RJPOee EIJn2"&gt;
&lt;DIV class="rPeykc" data-hveid="CGgQAQ" data-ved="2ahUKEwjkgsX3976OAxUaKVkFHbwjBCcQo_EKegQIaBAB"&gt;&lt;SPAN data-huuid="3712606319626260650"&gt;By using this approach, you can successfully integrate a 32-bit DLL into your 64-bit application, leveraging the power of COM for inter-process communication and data marshalling.&lt;SPAN class="pjBG2e" data-cid="6196d102-b532-4c48-b8ae-ac0f0604cead"&gt;&lt;SPAN class="UV3uM"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;</description>
      <pubDate>Tue, 15 Jul 2025 13:15:11 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/How-can-LoadDLL-a-32-bit-DLL-through-JSL/m-p/886902#M104938</guid>
      <dc:creator>Paul_Nelson</dc:creator>
      <dc:date>2025-07-15T13:15:11Z</dc:date>
    </item>
    <item>
      <title>Re: How can LoadDLL a 32-bit DLL through JSL?</title>
      <link>https://community.jmp.com/t5/Discussions/How-can-LoadDLL-a-32-bit-DLL-through-JSL/m-p/887355#M104948</link>
      <description>&lt;P&gt;Thanks Experts!&lt;BR /&gt;&lt;BR /&gt;grok3:&lt;BR /&gt;Simple Background&lt;BR /&gt;The user wants to receive real-time L1 five-level order book snapshot data (updated every 3 seconds) from the "Tornado" interface (StockDrv.dll), which only supports 32-bit applications. Originally, this was achieved in 32-bit JMP 14.3 using a custom Bridge.dll and JSL script. Now, the goal is to replicate this in 64-bit JMP, which cannot directly load 32-bit DLLs.&lt;/P&gt;
&lt;P&gt;Core Solution&lt;BR /&gt;Use a 32-bit agent (agent32.exe) to load Bridge.dll, fetch data from StockDrv.dll, and send it via TCP socket to 64-bit JMP, which receives and parses it into a table.&lt;/P&gt;
&lt;P&gt;Implementation&lt;BR /&gt;32-bit Agent (agent32.exe):&lt;BR /&gt;Loads Bridge.dll, calls Bridge_Init(0x9001), and sends 158-byte RCV_REPORT_STRUCTExV3 data via TCP (port 5000).&lt;BR /&gt;Compile:&lt;BR /&gt;batch&lt;/P&gt;
&lt;P&gt;cd /d I:\DZH\Agent&lt;BR /&gt;"I:\mingw32\bin\i686-w64-mingw32-g++.exe" -std=c++20 -O2 -Wall -I. -DWIN32 -static-libgcc -static-libstdc++ agent32.cpp -o agent32.exe -luser32 -lkernel32 -lws2_32&lt;BR /&gt;64-bit JMP JSL:&lt;BR /&gt;Connects to socket, reads 158-byte data, parses fields (e.g., stock code, price, five-level bids/asks), and writes to table.&lt;/P&gt;
&lt;P&gt;Key JSL snippet:&lt;BR /&gt;sock = Open("|tcp:127.0.0.1:5000");&lt;BR /&gt;dt = New Table("L1_Snapshot", New Column("Code", Character), New Column("Epoch", Numeric), New Column("NewPrice", Numeric), /* Add B1-5_P/V, S1-5_P/V */);&lt;BR /&gt;blob = Blob();&lt;BR /&gt;While(1, bytes = sock &amp;lt;&amp;lt; Read(blob, 158); If(bytes == 158, /* Parse and write to dt */));&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;Notes&lt;BR /&gt;Ensure agent32.exe accesses Bridge.dll and StockDrv.dll.&lt;BR /&gt;Use set PROCESSOR_ARCHITECTURE=x86 for 32-bit execution.&lt;BR /&gt;Handle data duplication by updating table rows based on stock code.&lt;/P&gt;</description>
      <pubDate>Wed, 16 Jul 2025 02:47:30 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/How-can-LoadDLL-a-32-bit-DLL-through-JSL/m-p/887355#M104948</guid>
      <dc:creator>lala</dc:creator>
      <dc:date>2025-07-16T02:47:30Z</dc:date>
    </item>
    <item>
      <title>Re: How can LoadDLL a 32-bit DLL through JSL?</title>
      <link>https://community.jmp.com/t5/Discussions/How-can-LoadDLL-a-32-bit-DLL-through-JSL/m-p/889791#M105193</link>
      <description>&lt;P&gt;Thanks Experts!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="_tgt transPara grammarSection"&gt;&lt;SPAN class="transSent" data-group="0-0"&gt;Ultimately, it was through asking OpenAI o3&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="_tgt transPara grammarSection"&gt;&lt;SPAN class="transSent" data-group="1-0"&gt;A relay DLL was recompiled in C++ to specifically provide data for JMP.&lt;/SPAN&gt;&lt;SPAN class="transSent" data-group="1-1"&gt;But only a 32-bit JMP can be used&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="_tgt transPara grammarSection"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="_tgt transPara grammarSection"&gt;&lt;SPAN class="transSent" data-group="3-0"&gt;The problem is that the data reading in the JMP table cannot display Chinese correctly.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="_tgt transPara grammarSection"&gt;&lt;SPAN class="transSent" data-group="4-0"&gt;The AI has modified CPP multiple times but failed. Even when different character sets were used in the Settings of JMP, it still didn't work and remained garbled.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="_tgt transPara grammarSection"&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;Names Default To Here(1);

dll = Load DLL("I:\\DZH\\Bridge\\Bridge.dll");
dll &amp;lt;&amp;lt; Declare Function("Bridge_Init@4",     Convention(STDCALL), Alias("Bridge_Init"),     Arg(UInt32),      Returns(Int32));
dll &amp;lt;&amp;lt; Declare Function("Bridge_Quit@0",     Convention(STDCALL), Alias("Bridge_Quit"),                       Returns(Void));
dll &amp;lt;&amp;lt; Declare Function("Bridge_GetCount@0", Convention(STDCALL), Alias("Bridge_GetCount"),                   Returns(Int32));
dll &amp;lt;&amp;lt; Declare Function("Bridge_ReadTSV@4",  Convention(STDCALL), Alias("Bridge_ReadTSV"),  Arg(Int32),       Returns(AnsiString));

If(dll &amp;lt;&amp;lt; Bridge_Init(36865) != 1, Throw("Bridge_Init失败"));

dt = New Table("L1_Snapshot",
 New Column("Name",     Character, "Nominal"),
 New Column("Epoch",    Numeric,   "Continuous"),
 New Column("NewPrice", Numeric),
 New Column("B1_P", Numeric), New Column("B1_V", Numeric),
 New Column("S1_P", Numeric), New Column("S1_V", Numeric),
 New Column("B2_P", Numeric), New Column("B2_V", Numeric),
 New Column("S2_P", Numeric), New Column("S2_V", Numeric),
 New Column("B3_P", Numeric), New Column("B3_V", Numeric),
 New Column("S3_P", Numeric), New Column("S3_V", Numeric),
 New Column("B4_P", Numeric), New Column("B4_V", Numeric),
 New Column("S4_P", Numeric), New Column("S4_V", Numeric),
 New Column("B5_P", Numeric), New Column("B5_V", Numeric),
 New Column("S5_P", Numeric), New Column("S5_V", Numeric)
);

While(1,
 cnt = dll &amp;lt;&amp;lt; Bridge_GetCount();
 For(i=0, i&amp;lt;cnt, i++,
  line = dll &amp;lt;&amp;lt; Bridge_ReadTSV(i);
  If(Is Missing(line)==0 &amp;amp; Contains(line, "\t"),
    vals = Words(line, "\t");
    If(N Items(vals)==23,
      dt &amp;lt;&amp;lt; Add Rows(1);
      r = N Rows(dt);
      Column(dt,1)[r] = vals[1];
      Column(dt,2)[r] = Num(vals[2]);
      Column(dt,3)[r] = Num(vals[3]);
      idx=4;
      For(c=4, c&amp;lt;=23, c++,
        Column(dt,c)[r] = Num(vals[idx]); idx++;
      );
    );
  );
 );
 Wait(0.1);
);&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 28 Jul 2025 13:48:50 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/How-can-LoadDLL-a-32-bit-DLL-through-JSL/m-p/889791#M105193</guid>
      <dc:creator>lala</dc:creator>
      <dc:date>2025-07-28T13:48:50Z</dc:date>
    </item>
    <item>
      <title>Re: How can LoadDLL a 32-bit DLL through JSL?</title>
      <link>https://community.jmp.com/t5/Discussions/How-can-LoadDLL-a-32-bit-DLL-through-JSL/m-p/893608#M105446</link>
      <description>&lt;P&gt;&lt;SPAN&gt;Thanks Experts!&lt;BR /&gt;Another AI made this suggestion; here is the original wording: “I get it now—this isn’t a ‘GBK → UTF-8’ problem at all. It’s a memory-misinterpretation issue that scrambles both numbers and Chinese text. Those weird glyphs (e.g., ↗&amp;#31;?C, 镃毂镃叓) look like JMP grabbed a wrong pointer from the DLL and decoded the raw binary of a floating-point field as if it were GBK text. My suspicion: 1. Structure layout mismatch Your `RCV_REPORT_STRUCTExV3` in Bridge.cpp doesn’t match the byte alignment (`packing`) used inside StockDrv.dll. If the `#pragma pack` settings differ, the data shifts and the Chinese you read is actually garbage from a float. 2. Stock code is not a plain char[8] In some versions of DZH the code field is `char m_szLabel[16]` or even wide-char (2-byte GB2312). If you `memcpy` it as single-byte, you get half-cut Han characters. 3. DLL interface version mismatch If StockDrv.dll is returning a V4 structure while you’re reading it as V3, everything will be off. Here’s what I suggest: - Force the same `#pragma pack(push, 1)` that StockDrv.h uses. - Verify the actual length of `m_szLabel` (`STKLABEL_LEN`). - Skip any UTF-8 conversion; dump the raw bytes straight to CSV. - Make sure floats and ints land in their correct offsets—no shifting. I’ll write you a complete, alignment-correct version with key points commented; just drop it in.”&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Sun, 10 Aug 2025 10:22:06 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/How-can-LoadDLL-a-32-bit-DLL-through-JSL/m-p/893608#M105446</guid>
      <dc:creator>lala</dc:creator>
      <dc:date>2025-08-10T10:22:06Z</dc:date>
    </item>
  </channel>
</rss>

