d的ldc混杂错误
原文
dmd
没问题,ldc
的.
我有带声明的.di
,及从它们生成存根
函数和全局指针
的单独模块:
__gshared extern(C) static void* dpford_funcp_DMANGLE;
pragma(mangle, "DMANGLE")
void dpford_func_DMANGLE() {
asm{
naked;
jmp dpford_funcp_DMANGLE;
}
}
我非常不想用特征
生成函数体
.我试用ldc.attributes.naked
,但同样如此.
这是生成函数
的串片段.
mixin({
import std.array;
string result = q{
__gshared extern(C) static void* dpford_funcp_DMANGLE;
pragma(mangle, "DMANGLE")
void dpford_func_DMANGLE() {
asm{
naked;
jmp dpford_funcp_DMANGLE;
}
}
};
return result.replace("DMANGLE", n.mangleof);
}());
函数声明
//api.di
module api;
enum SorrelAPI;
@SorrelAPI
int testFunc(int, int);
mixin
模板中,另一
模块从该模块
中读取更改后的函数名
.
好吧,你正在为所有包装器
用void()
签名.如果不想用正确签名
(可从n继承),则要避免用正确类型的声明
和包装器模块
编译模块
到单个目标文件
,来避免LDC
检测到签名不匹配
.因此,如果有多个
只包含这些mixin
的包装器模块
,则单独编译
到它们自己的目标文件/静态库
应可工作.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现