Я прочитал много постов по этому поводу, но ни один из них не посвящен моей проблеме.
У меня есть очень маленькая DLL, которая позволяет процессу Java отправлять сообщения Windows. Просто звонит
FindWindowEx(...)
SendMessage(...)
Я скомпилировал это с VS2005 и связал с / MT, и все в порядке, но если я пытаюсь сделать мою DLL зависимой от MSVCRT и связать с / MD, то я получаю ошибку неудовлетворенной связи.
java.lang.UnsatisfiedLinkError: MyDll.dll: не удается найти зависимые библиотеки
В соответствии с зависимости.exe у него есть две отсутствующие библиотеки DLL, GPSVC.DLL и IESHIMS.DLL. Первый существует в c: \ windows \ system32, а второй - в пути winsxs. Существуют ЗАГРУЗКИ других библиотек DLL, загруженных из c: \ windows \ system32, и GPSVC.DLL является странным в том смысле, что даже если на моем компьютере win7x64 работает администратор, я не могу запустить, это зависит от того, что он не найден ...
В любом случае, я попытался принудительно загрузить обе эти библиотеки DLL в Java (упрощенно - я не контролирую java.library.path)
Field field = ClassLoader.class.getDeclaredField("usr_paths");
field.setAccessible(true);
String[] paths = (String[]) field.get(null);
String[] tmp = new String[paths.length + 2];
System.arraycopy(paths, 0, tmp, 0, paths.length);
tmp[paths.length] = "c:/windows/system32";
tmp[paths.length + 1] = "c:/Windows/winsxs/amd64_microsoft-windows-ie-ieshims_31bf3856ad364e35_8.0.7601.17514_none_c06d7c9c27da8591";
field.set(null, tmp);
но это не имело значения. Я могу отступить, чтобы сделать его статически связанным, но я бы не стал.
Есть идеи, что я могу попробовать дальше?
Antony