d不能从DLL导出变量
//dll.d:
module dll;
export __gshared int x = 41;
extern(Windows) int DllMain(void*, uint, void*)
{
return 1;
}
//----
//client.d:
module client;
import dll;
void main()
{
assert(x == 41); // 失败,x表示垃圾
}
//----命令:
dmd -m64 -shared dll.d
dmd -m64 client.d dll.lib
client.exe
dmd -m64 -H -o- dll.d
发出定义而不是声明
,因此使用接口文件
也不行.
唯一可行
方法是手动更改.di
文件中定义
为声明
(extern export __gshared int x
),但不实际.
目前需要手动创建.di
文件,其内容为:
export extern __gshared int x;
才能成功.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现