我正在尝试在C ++ Builder项目中使用Delphi函数(因为ImageEn的IEVision组件没有可用于提取条形码的C ++接口,所以我需要在Delphi单元中提取条形码)
我创建了一个C ++ Builder项目,并添加了一个Delphi单元,其完整代码为:
unit Unit2;
interface
implementation
function MyOutput : String ;
begin
Result := 'hello';
end;
end.
我以C ++形式使用该单元:
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.hpp"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
String result = MyOutput();
}
生成的.hpp是:
// CodeGear C++Builder
// Copyright (c) 1995, 2013 by Embarcadero Technologies, Inc.
// All rights reserved
// (DO NOT EDIT: machine generated header) 'Unit2.pas' rev: 26.00 (Windows)
#ifndef Unit2HPP
#define Unit2HPP
#pragma delphiheader begin
#pragma option push
#pragma option -w- // All warnings off
#pragma option -Vx // Zero-length empty class member
#pragma pack(push,8)
#include <System.hpp> // Pascal unit
#include <SysInit.hpp> // Pascal unit
//-- user supplied -----------------------------------------------------------
namespace Unit2
{
//-- type declarations -------------------------------------------------------
//-- var, const, procedure ---------------------------------------------------
} /* namespace Unit2 */
#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_UNIT2)
using namespace Unit2;
#endif
#pragma pack(pop)
#pragma option pop
#pragma delphiheader end.
//-- end unit ----------------------------------------------------------------
#endif // Unit2HPP
请注意,MyOutput函数的声明不包含在.hpp文件中。如何让Delphi将该函数放入.hpp
答案 0 :(得分:4)
生成的头文件仅包含接口部分的符号。您只在实现部分中声明了该函数。也无法从Delphi代码调用该函数。
您还必须在界面部分声明该功能,以使其对其他单位可见。
unit Unit2;
interface
function MyOutput : String ;
implementation
function MyOutput : String ;
begin
Result := 'hello';
end;
end.