BASS & Delphi XE8, project for iOS

Started by X-Vlad,

X-Vlad

Hi,

I've using BASS library to create project in Delphi XE8 for iOS that will be play audio stream. But I've error during linking:
"
[DCC Error] E2597 Undefined symbols for architecture arm64:
   Error: "_kCFStreamPropertyFTPResourceSize", referenced from:      l016 in ..\lib\bass\libbass.a(libbass.a-arm64-master.o);
      Error: "_kCFHTTPVersion1_0", referenced from:      l016 in ..\lib\bass\libbass.a(libbass.a-arm64-master.o);
      Error: "_CFHTTPMessageCopySerializedMessage", referenced from:      l016 in ..\lib\bass\libbass.a(libbass.a-arm64-master.o);
      Error: "_kCFStreamSSLValidatesCertificateChain", referenced from:      l016 in ..\lib\bass\libbass.a(libbass.a-arm64-master.o);
      Error: "_kCFStreamPropertyFTPProxy", referenced from:      l016 in ..\lib\bass\libbass.a(libbass.a-arm64-master.o);
      Error: "_CFReadStreamCreateForHTTPRequest", referenced from:      l016 in ..\lib\bass\libbass.a(libbass.a-arm64-master.o);
      Error: "_kCFStreamPropertyHTTPResponseHeader", referenced from:      l016 in ..\lib\bass\libbass.a(libbass.a-arm64-master.o);
      Error: "_kCFStreamPropertySSLSettings", referenced from:      l016 in ..\lib\bass\libbass.a(libbass.a-arm64-master.o);
      Error: "_kCFStreamPropertyHTTPProxy", referenced from:      l016 in ..\lib\bass\libbass.a(libbass.a-arm64-master.o);
      Error: "_CFNetworkCopySystemProxySettings", referenced from:      l016 in ..\lib\bass\libbass.a(libbass.a-arm64-master.o);
      Error: "_kCFStreamPropertyFTPFileTransferOffset", referenced from:      l016 in ..\lib\bass\libbass.a(libbass.a-arm64-master.o);
      Error: "_kCFStreamPropertyFTPUsePassiveMode", referenced from:      l016 in ..\lib\bass\libbass.a(libbass.a-arm64-master.o);
      Error: "_kCFStreamPropertyFTPFetchResourceInfo", referenced from:      l016 in ..\lib\bass\libbass.a(libbass.a-arm64-master.o);
      Error: "_CFReadStreamCreateWithFTPURL", referenced from:      l016 in ..\lib\bass\libbass.a(libbass.a-arm64-master.o);
      Error: "_CFHTTPMessageAddAuthentication", referenced from:      l016 in ..\lib\bass\libbass.a(libbass.a-arm64-master.o);
      Error: "_kCFHTTPAuthenticationSchemeBasic", referenced from:      l016 in ..\lib\bass\libbass.a(libbass.a-arm64-master.o);
      Error: "_CFHTTPMessageAppendBytes", referenced from:      l016 in ..\lib\bass\libbass.a(libbass.a-arm64-master.o);
      Error: "_CFHTTPMessageSetHeaderFieldValue", referenced from:      l016 in ..\lib\bass\libbass.a(libbass.a-arm64-master.o);
      Error: "_CFHTTPMessageCreateRequest", referenced from:      l016 in ..\lib\bass\libbass.a(libbass.a-arm64-master.o);
      ld: symbol(s) not found for architecture arm64
"

Could somebody help me with this?

Ian @ un4seen

That looks like the CFNetwork framework isn't being included. Adding it to your project should fix things. You may also need to add the AudioToolbox/SystemConfiguration/Accelerate frameworks.

X-Vlad

I've added that frameworks. But it doesn't work.
Please look at attached screen shot

Ian @ un4seen

Does that image contain a list of available frameworks or actually used frameworks? I'm not a Delphi XE8 user myself, so I'm not familiar with how you would specify what frameworks to use with it. Also, do you only have the problem with the arm64 architecture, not the armv7 architecture?


X-Vlad


alexbirukov

Quote from: X-VladFixed. CFNetwork doesn't include into build.

How you fix this problem?

X-Vlad

created unit and added into project
unit iOSapi.CFNetwork;

interface

uses Macapi.ObjectiveC, iOSapi.CocoaTypes, iOSapi.Foundation;


// ===== External functions =====

const
  libCFNetwork = '/System/Library/Frameworks/CFNetwork.framework/CFNetwork';

implementation

{$IFDEF IOS}
{$IF Not defined(CPUARM)}

uses Posix.Dlfcn;

var
  iCFNetworkModule: THandle;
{$ENDIF}
{$IFDEF IOS}
{$IF defined(CPUARM)}
procedure LibCFNetworkFakeLoader; cdecl; external libCFNetwork;
{$ELSE}

initialization

iCFNetworkModule := dlopen( MarshaledAString( libCFNetwork ), RTLD_LAZY );

finalization

dlclose( iCFNetworkModule );
{$ENDIF}
{$ENDIF}
{$ENDIF}


end.

alexbirukov

Quote from: X-Vladcreated unit and added into project
unit iOSapi.CFNetwork;

interface

uses Macapi.ObjectiveC, iOSapi.CocoaTypes, iOSapi.Foundation;


// ===== External functions =====

const
  libCFNetwork = '/System/Library/Frameworks/CFNetwork.framework/CFNetwork';

implementation

{$IFDEF IOS}
{$IF Not defined(CPUARM)}

uses Posix.Dlfcn;

var
  iCFNetworkModule: THandle;
{$ENDIF}
{$IFDEF IOS}
{$IF defined(CPUARM)}
procedure LibCFNetworkFakeLoader; cdecl; external libCFNetwork;
{$ELSE}

initialization

iCFNetworkModule := dlopen( MarshaledAString( libCFNetwork ), RTLD_LAZY );

finalization

dlclose( iCFNetworkModule );
{$ENDIF}
{$ENDIF}
{$ENDIF}


end.

Thanks, all fine.

brethren70

Hi,

How to link "libbass.a" with Delphi XE8?
{$L libbass.a} failed. (bad object file)

Please, let me know how to link libbass.a  :D


Polywick Studio


Make sure you have the correct libbass.a version.