【发布时间】:2015-10-30 14:06:15
【问题描述】:
我有一个这样声明的 Delphi 函数
function strcspn(s1, s2: PAnsiChar): Cardinal; cdecl;
我想从 SphinxC-- 中调用它,问题是 SphinxC-- 需要 strcspn 的名称而无需任何修饰。
那么如何强制 Delphi 在 obj 文件中设置?
我会问的更详细的。
我使用的是 SphinxC-- 语言,你可以认为它是 Masm 汇编器和 c 语言的混合体。它可以产生OMF文件格式。
我通过链接使用 SphinxC 编译的代码和使用 bcc32(c++Builder 编译器)编译的代码,成功地将它与 C++Builder 混合。通过在 c++ 代码中使用 extern "C" 术语来告诉 bcc32 未修改函数名,也使用 -u- (bcc32 命令行 otpion) 来告诉 bcc32 在没有前缀下划线的情况下预测函数名。
现在我有一些 delphi 代码,我想将它与我的 SphinXC- 代码混合, 就像我对 c++Builder 所做的一样。
所以我的问题是如何强制 delphi 编译器 dcc32 预测未修改的函数名称?
再次编辑:
这是我对 bcc32、dcc32、ilink32 的推荐行
适用于 dc32
dcc32.exe -DMSWINDOWS -JPHNE -I"mypath/include" -U"mypath\lib" -U"mypath\units" mfiley.pas
为密件抄送32
bcc32.exe -u- -DDEBUG;NO_STRICT -D_RTLDLL;USEPACKAGES -k -c -tWM -v- -Vw -W- -Par -M -Hc -P myfile.cpp
ilink32
ilink32 -v -Gn -G8 ........ etc
【问题讨论】:
-
什么是 SphinxC--?我怀疑您是否可以期望将 Delphi 代码编译成目标文件并静态链接它。
strcspn是一个 C 标准库函数。为什么要在 Delphi 中实现它?简而言之,您似乎没有清楚地了解自己在做什么,并且您当然没有就这个问题传达任何可回答的内容。请在编辑中努力清楚地表达您在做什么,以及您的问题是什么。 -
好的,大卫,我正在尝试混合我最好的编程语言 SphinxC——并将其扩展为使用 C++Builder 、 Delphi 和它的 lnker。 SphinxC-- 是 c 和 asm 的中间点。所以我可以通过使用 extern "C" term 和 -u-commend 行选项来调用 C++Builder 函数,我的问题是如何使用 Delphi 来预测未损坏的函数名称,希望现在很清楚。请问有什么帮助吗?
-
连远程都不清楚。请不要在 cmets 中提问。请编辑问题以明确您的要求。
-
还远未弄清楚。 Delphi 编译器不是 bcc32。那就是 C++ Builder 编译器。请您认真注意细节。
-
@Jens 这有什么帮助?
标签: delphi delphi-2009