Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从SphinxC调用Delphi函数--_Delphi_Delphi 2009 - Fatal编程技术网

从SphinxC调用Delphi函数--

从SphinxC调用Delphi函数--,delphi,delphi-2009,Delphi,Delphi 2009,我有一个Delphi函数声明如下 function strcspn(s1, s2: PAnsiChar): Cardinal; cdecl; 我想从SphinxC中调用它-,问题是SphinxC-,需要strcspn的名称,没有任何装饰 那么如何让C Delphi在obj文件中设置它呢 我会详细询问 我使用SPHXXC语言,你可以把它看成是MASM汇编语言和C语言的混合体。它可以产生OMF文件格式 通过链接使用SphinxC编译的代码和使用bcc32(C++Builder编译器)编译的代码,

我有一个Delphi函数声明如下

function strcspn(s1, s2: PAnsiChar): Cardinal;  cdecl;
我想从SphinxC中调用它-,问题是SphinxC-,需要strcspn的名称,没有任何装饰

那么如何让C Delphi在obj文件中设置它呢

我会详细询问

我使用SPHXXC语言,你可以把它看成是MASM汇编语言和C语言的混合体。它可以产生OMF文件格式

通过链接使用SphinxC编译的代码和使用bcc32(C++Builder编译器)编译的代码,我成功地将其与C++Builder混合。通过使用C++中的“外部”“C”项来告诉Bcc32函数名,也使用-U-BC32命令行OTPIN,它告诉BC32在没有前缀下划线的情况下引用函数名。 现在我有一些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
对于bcc32

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
我的问题是如何强制Delphi编译器dcc32生成未混合的函数名

这是不可能的。如果您希望使用非混合函数名,那么需要使用类似于编译后修改名称的工具


<> P>一个更大的问题是,任何严肃的真实世界德尔菲法都需要delphi RTL,而且我很少希望能将它与C++项目静态连接起来。实际上,在同一模块中混合C++和Delphi代码需要一个工具,它对两种语言都有很深的知识,并且工具是C++ +Builder。

已经有C++ Builder,所以使用C++的Delphi单元非常容易。我将尝试使用objconv。我的最后一个解决方案是从C++Builder帮助函数调用delphi

像这样的

function strcspn(s1, s2: PAnsiChar): Cardinal;  cdecl;

什么是狮身人面像--?我怀疑您是否能期望将Delphi代码编译成一个对象文件并静态链接它
strcspn
是一个C标准库函数。为什么要在Delphi中实现它?简言之,你似乎对自己正在做的事情没有清晰的理解,而且你肯定没有就这个问题传达任何可回答的信息。请努力在编辑中清楚地表达你在做什么,你的问题是什么。好的,大卫,我正在尝试混合我最好的编程语言SphinxC——并将其扩展到使用C++Builder、Delphi和它的lnker。SphinxC——是c和asm的中点。因此,我可以使用外部“C”术语和-u-推荐行选项调用C++Builder函数,我的问题是如何使用Delphi生成未被管理的函数名,希望现在已经清楚了。有什么帮助吗?一点也不清楚。请不要在评论中问这个问题。请编辑这个问题,使它非常清楚你在问什么。它仍然很不清楚。Delphi编译器不是bcc32。这是C++ Builder编译器。请你认真注意细节。@Jens这有什么帮助?这似乎与所问的问题无关。总而言之,问题是:我的问题是如何强制Delphi编译器dcc32生成未混合的函数名?请你试着回答被问到的问题。好的,当我问我的问题时,我的初衷是强迫Dlphie生成未混合的名称,以便我以后可以从SphinxC轻松调用该函数-,因为没有选择未混合的名称的选项,我发现我的问题的上述解决方案,可能对其他人有用。这与解决你的问题无关。这是关于回答被问到的问题。请仔细阅读。如果你参与更多,那么我们会更愿意为你多做一点。