using a C Dll and lib in obj c - ios

2019-05-28 12:34发布

I have a C lib and dll file from windows application. No source code with me. Is it possible to use that in an IOS application.

I have seen mixed responses and am confused. If we have source code , i think we need to create dylib and then we can use the same after including relevant header file.

Please share any expert ideas to guide me in right direction. Appreciate your help .

  • mia

标签: ios c dll
4条回答
Root(大扎)
2楼-- · 2019-05-28 12:47

No. If you all you have is a compiled binary DLL, there is no way to use it on iOS. Unless you happen to have an ARM DLL for the upcoming Windows 8, your DLL contains either x86 or x86-64 machine code (or maybe IA64 if you have a lot of money), which absolutely will not run on iOS devices, which are all ARM architectures. Plus many more reasons.

If you have the source code, you can recompile it for iOS, either directly into your app, as a static library that can be linked in with your app, or as a dynamic library as part of a framework. But in all cases, you need to recompile it from source code using the iOS compiler.

查看更多
Anthone
3楼-- · 2019-05-28 12:49

You need to get a iOS compatible library, no other way around it. There are several reasons:

  • iOS doesn't support DLLs as they are windows format, but moreover, you can't use any dynamic library on iOS, as Apple restricts it.
  • DLLs are usually for intel CPUs, while iOS devices have ARM CPUs.
  • Most dlls are calling windows APIs - are you sure this one's not?
查看更多
成全新的幸福
4楼-- · 2019-05-28 12:55

You are going to have to recompile it as a static library (.a file). Apple doesn't allow dynamic libraries except for their own frameworks (so you can't compile it as a dylib).

查看更多
劫难
5楼-- · 2019-05-28 13:10

Dynamic Libraries are not permitted on iOS to begin with, but above that, the DLL file format is not recognized by Darwin or the underlying XNU Kernel at all, as the binary format is different.

Windows APIs are not usable on the Darwin OS either (Both Mac OS X and iOS are wrappers around the basic Darwin OS). You will need to rewrite the code from the DLL to use the POSIX and/or Objective-C APIs and compile it as a static library to use it.

查看更多
登录 后发表回答