gpt4 book ai didi

c# - 使用 Nim 生成用于 C#/VB6 的 DLL

转载 作者:行者123 更新时间:2023-12-05 02:40:42 24 4
gpt4 key购买 nike

在尝试解决这个问题很多小时后,我想知道是否有办法解决这个问题。

我需要能够导出从 VB6 调用的函数(是的,您没看错,不是 VB.NET),但我不知所措。我已经生成了一个应该可以工作的 DLL;它至少在从 C 调用时有效,但仅此而已。

也许一些 Nim vert 可以引导我朝着正确的方向前进。我将非常感激。

最佳答案

我绝对不是 Nim vert ,但这里有一些有用的东西。
从 VB6 应用程序调用 Nim proc。

Nim DLL(使用 nim c --cpu:i386 --app:lib --nomain 编译):

{.passc:"-m32"}
{.passl:"-m32"}
import winim,os

proc TestFunc(a: cint):cint {.exportc, stdcall, dynlib.} =
echo "function called!"
a + 5

when defined(vcc):
{.emit: "N_LIB_EXPORT N_CDECL(void, NimMain)(void);".}
else:
proc NimMain() {.cdecl, importc.}

proc DllMain(hModule: HINSTANCE, reasonForCall: DWORD, lpReserved: LPVOID): WINBOOL {.exportc, dynlib, stdcall.} =
case reasonForCall:
of DLL_PROCESS_ATTACH:
when defined(vcc):
{.emit: "NimMain();".}
else:
NimMain()
AllocConsole()
discard stdout.reopen("CONOUT$", fmWrite)
discard execShellCmd("chcp 65001")
echo "Hello from Nim Code!"

else:
discard
return TRUE

VB6:

Private Declare Function TestFunc Lib "nim.dll" Alias "TestFunc@4" (ByVal a As Long) As Long

Private Sub Form_Load()
Caption = CStr(TestFunc(5))
End Sub

关于c# - 使用 Nim 生成用于 C#/VB6 的 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68400536/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com