【发布时间】:2011-03-05 14:40:27
【问题描述】:
我正在尝试将 MySql C 连接器 6.02 标头转换为 D,但我遇到了一些奇怪的崩溃。 我的猜测是我在翻译结构或函数时犯了一些错误(我不太擅长 C)。
我在 libmysql.dll 上使用 implib /system 创建了一个 lib 文件。
我无法让 htod.exe 工作。使用 -hs(包括系统文件)抱怨找不到系统文件。
Coffimlib.exe 没有在导出的内部名称前添加 _ 的选项。
我找不到免费版的 coff2omf。
mysql.d 是包装器。我在每个包装定义之前都包含了 C 定义,以便更容易发现错误。该文件还包括mysql dll和转换后的libfile。
在编译 mytest_fails.d 时它会崩溃。 mytest_works.d 只有一个断言,这使它可以工作。使用 -release 编译 mytest_works 也会使其崩溃。
我一直在使用 dmd 2.051
Download mytest.zip from share1t.com
更新:我还在 D.learn 新闻组上问过一些关于此的问题,但我认为没有人看过代码。
【问题讨论】:
-
另外请注意,htod 很乐意丢弃 constness 和被预处理器停用的东西(即 #if VERFOO ... 未转换为版本(VERFOO)...)您也可以尝试 SWIG 或dsource.org/projects/visuald/browser/trunk/c2d 转换 C 头文件。
-
@Trass3r:我忘了提,但是 swig 刚刚崩溃了。