Help compiling libimobiledevice please

Question Description


Please can anyone show me how to compile the 'Libimobiledevice' tools on windows please? There website says its cross-platform but there seems to be no information about how to compile them for windows. I have idevicerecovery working on ubuntu by following some instructions but i'd like to have the complete toolset running under windows.


Final Answer

Here is the answer

Now you can use libimobiledevice on windows. For example, you can develop a win app to synchronize Bookmark between Firefox and iPhone etc.

A library you can used on WINDOWS to communicate with services running on Apple iPhone/iPod Touch devices. You can find source code here And there is a list about what this library support. I just compiled it on Windows, so you can use it in your win32 apps.
I both compiled static and dynamic-link library. You can choose one which you prefer, BUT please read this FIRST.
Static Library
You should install MinGW gcc in your system before using this static library. Because i'm too stupid and lazy to solve some problem there
So you can only compile it on MinGW-gcc and use it on windows.
gcc -o ideviceinfo ideviceinfo.c -I./Include/ ./Lib/imobiwin32.lib ./Lib/glib-2.0.lib ./Lib/libgcrypt.a ./Lib/libgpg-error.a ./Lib/libxml2 -static

gcc -o idevice_id idevice_id.c -I./Include/ ./Lib/imobiwin32.lib ./Lib/glib-2.0.lib ./Lib/libgcrypt.a ./Lib/libgpg-error.a ./Lib/libxml2 -static
gcc -o idevicepair idevicepair.c -I./Include/ ./Lib/imobiwin32.lib ./Lib/glib-2.0.lib ./Lib/libgcrypt.a ./Lib/libgpg-error.a ./Lib/libxml2 -static
Dynamic-Link Library
This one is much easier to use if you prefer MSVC than gcc.
I only test in Microsoft Visual Studio 2008/2010.
Maybe you need dynamically load free function which exported from msvcrt.dll and use it to free some memory. Since some functions use malloc exported from msvcrt.dll. For example
Both examples had define function ptr Myfree. Like this
typedef void (*MYFREEFUNC)(void *memblock);
void InitFreeFunc()
HMODULE hMod = LoadLibrary(_T("msvcrt.dll"));
Myfree = (MYFREEFUNC)GetProcAddress(hMod, "free");
example 1

char *devname = NULL;
lockdownd_get_device_name(client, &devname);
//lockdownd_get_device_name will use malloc exported from
//msvcrt.dll to allocate memory block for devname.
//Now you need to free this memory block.
//If you use free function directly you will get a asset error,
//since msvc link free which exported by msvcr[xx].dll, not msvcrt.dll
Myfree(devname); //right
example 2

plist_t array = NULL;
uint32_t isize = plist_array_get_size(array);
char* pxml;
pxml = NULL;
plist_to_xml(array, &pxml, &isize);
//Here, this function alse use malloc exported from msvcrt.dll to
//allocate memory block.
Jan 29, 2012
Update libplist-1.4 to libplist-1.8
Update usbmuxd-1.0.7 to latest master git (Until Jan 29)
Update libimobiledevice-1.1.1 to latest master git

Visit website
or google - ilibimobile device for windows

Smartbrains (326)
University of Virginia

Thanks for the help.

Outstanding. Studypool always delivers quality work.

Tutor was very helpful and took the time to explain concepts to me. Very responsive, managed to get replies within the hour.


Brown University

1271 Tutors

California Institute of Technology

2131 Tutors

Carnegie Mellon University

982 Tutors

Columbia University

1256 Tutors

Dartmouth University

2113 Tutors

Emory University

2279 Tutors

Harvard University

599 Tutors

Massachusetts Institute of Technology

2319 Tutors

New York University

1645 Tutors

Notre Dam University

1911 Tutors

Oklahoma University

2122 Tutors

Pennsylvania State University

932 Tutors

Princeton University

1211 Tutors

Stanford University

983 Tutors

University of California

1282 Tutors

Oxford University

123 Tutors

Yale University

2325 Tutors