abczise
V2EX  ›  问与答

大神们,请教一下关于内存通信的问题!

  •  
  •   abczise · Dec 29, 2019 · 2081 views
    This topic created in 2354 days ago, the information mentioned may be changed or developed.
    我想让一个 DLL 变成一个本地内存的 API,好让其他 DLL 直接调用他,从而进行跟 EXE 之间的通信。
    我用的是 C#,采用的方法是共享函数指针的方法。将 exe 中的函数指针共享给 DLL1,其他 DLL 调用 DLL1 中预先公开的函数,那么就达到了其他 DLL 与 EXE 之间的通信问题。
    但是中间存在一个弊端,就是函数指针的生命期好像特别短,调用完毕就直接给回收了。
    采用循环让他保持生命期呢,但是有时候也不行。
    请问各位大神有没有其他好的点子?
    共享内存的方法可以呢,但是我需要 EXE 与 DLL 都是双向通信。
    6 replies    2019-12-30 20:43:19 +08:00
    sx90
        1
    sx90  
       Dec 29, 2019
    不懂

    大型数据,个人建议文件化;

    一般用 这个 https://docs.microsoft.com/zh-cn/dotnet/standard/io/memory-mapped-files
    0TSH60F7J2rVkg8t
        2
    0TSH60F7J2rVkg8t  
       Dec 29, 2019 via iPhone
    named pipe
    xupefei
        3
    xupefei  
       Dec 29, 2019 via iPhone
    GC.KeepAlive
    wnpllrzodiac
        4
    wnpllrzodiac  
       Dec 30, 2019 via Android
    com 组件?
    AdamJin
        5
    AdamJin  
       Dec 30, 2019
    GCHandle?
    abczise
        6
    abczise  
    OP
       Dec 30, 2019
    @xupefei 谢了,解决了。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3379 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 11:52 · PVG 19:52 · LAX 04:52 · JFK 07:52
    ♥ Do have faith in what you're doing.