Avi*_*fer 11 c# dll ffi dllimport nim-lang
我看过几乎每一个例子,我可以通过谷歌找到,并不能完成任务的最简单的创建一个dll (窗口) 从nim
任何人都可以一步一步地解释它吗?
我正在使用nimIDE - aporia生成代码.
构建a是否dll需要使用命令行?我想有一个解决方法.
使用aporia IDE\ command line,如何通过编译下面的代码来实现与以下代码相同的结果dll:
extern "C" __declspec(dllexport) int __stdcall return_multiply(int num1, int num2)
{
return num1 * num2;
}
Run Code Online (Sandbox Code Playgroud)
您可能知道的代码可以从中调用 c#
简而言之:
{.stdcall,exportc,dynlib.}--app:lib请记住,您始终可以检查生成的C代码以查看正在进行的操作.那么,让我们从包含以下内容的文件开始test.nim:
proc return_multiply(num1, num2: int): int {.stdcall,exportc,dynlib.} =
num1 * num2
Run Code Online (Sandbox Code Playgroud)
编译它nim c --app:lib -d:release test.nim会生成DLL以及此代码(在nimcache文件夹中):
N_LIB_EXPORT N_STDCALL(NI, return_multiply)(NI num1, NI num2) {
NI result;
result = 0;
result = (NI)(num1 * num2);
return result;
}
Run Code Online (Sandbox Code Playgroud)
您可以在中查找这些宏nimbase.h.例如N_LIB_EXPORT,Windows的定义如下:
# ifdef __cplusplus
# define N_LIB_EXPORT extern "C" __declspec(dllexport)
# else
# define N_LIB_EXPORT extern __declspec(dllexport)
# endif
# define N_LIB_IMPORT extern __declspec(dllimport)
Run Code Online (Sandbox Code Playgroud)
总的来说,您最终会得到您给出的功能签名.
如果您不想使用命令行进行编译,则必须确定启用哪些Aporia设置--app:lib.
| 归档时间: |
|
| 查看次数: |
1403 次 |
| 最近记录: |