0

In Delphi XE2, I use Indy TIdHTTP to make a http connection. In Windows 7 it works perfectly. But now I have started the program on a Windows 8.1 computer and when trying to connect (which in Windows 7 works perfectly) I get an error message from Windows telling me that MSVCR110.dll is missing on the computer (message title: "Drag: MyProgram.exe - System error").

Is it safe to take the MSVCR110.dll from my Windows 7 computer and install it on the Windows 8.1 computer in my application's directory? Do I have to somehow register the DLL when I install it in Windows 8.1 in my application's directory?

EDIT 201407152319: Ahhhh, found the culprit: This error occurs only in Windows 8.1 when using the new (version 1.0.1.7) (heart-bleed-tested) libeay32.dll and ssleay32.dll! When using the older DLLs in Windows 8.1 the error does not occur!

David Heffernan
  • 601,492
  • 42
  • 1,072
  • 1,490
user1580348
  • 5,721
  • 4
  • 43
  • 105
  • Both answers are equally correct and helpful. I'm not sure which one I should check. – user1580348 Jul 15 '14 at 23:08
  • I deleted my answer because it seems that I misunderstood the question. I thought you wanted to know how to meet the dependency but it seems you wanted to know how to remove it. – David Heffernan Jul 16 '14 at 05:07
  • I reverted your edit. You were obviously keen to solve your problem, but Q&A is about answering questions. If you want to edit the question to ask how to remove the dependency that would fit much better with the answer that you accepted. I suggest that you do that. – David Heffernan Jul 16 '14 at 17:58

1 Answers1

3

Indy has no dependencies on the VC++ runtime library. However, some distributions of the OpenSSL DLLs do. The OpenSSL DLLs that are available on Indy's Fulgan mirror have been compiled without the dependency.

Remy Lebeau
  • 555,201
  • 31
  • 458
  • 770
  • That means they have two runtime, one each, which seems wasteful – David Heffernan Jul 15 '14 at 22:16
  • Perhaps, but a lot of people don't like the dependency. Indy doesn't care one way or the other, use whatever OpenSSL DLLs you want. You don't have to use the Fulgan DLLs. They are provided as a convenience, not a requirement. – Remy Lebeau Jul 15 '14 at 22:27
  • Mhmm, the Fulgan "openssl-1.0.1h-i386-win32.zip" also works in Windows 7 x64, despite the "win32" in the name of the archive. But the Fulgan "openssl-1.0.1h-x64_86-win64.zip" does not work in Windows 8 32 bit. So I assume I should install the DLLs from "openssl-1.0.1h-i386-win32.zip" both in Windows 7/8/8.1 and in both 32/64 bit versions? – user1580348 Jul 15 '14 at 22:39
  • Does anybody know whether the Fulgan DLLs ar heartbleed-tested? – user1580348 Jul 15 '14 at 23:06
  • 1
    It does not matter whether the OS is 32bit/64bit, it matters whether your app is 32bit/64bit. If your app is 32bit, you MUST use the 32bit DLLs. If your app is 64bit, you MUST use the 64bit DLLs. – Remy Lebeau Jul 15 '14 at 23:06
  • The Fulgan DLLs are compiled from the official OpenSSL codebase. Fulgan's latest DLLs have been compiled using a heartbleed-fixed version of the OpenSSL codebase. – Remy Lebeau Jul 15 '14 at 23:07
  • @RemyLebeau Thanks Remy, these are very clear and concise answers (also the answers from David). – user1580348 Jul 15 '14 at 23:32
  • @RemyLebeau So the "win32" and "win64" substrings in the archive names are potentially misleading? – user1580348 Jul 15 '14 at 23:39
  • Let us [continue this discussion in chat](http://chat.stackoverflow.com/rooms/57357/discussion-between-remy-lebeau-and-user1580348). – Remy Lebeau Jul 16 '14 at 00:18
  • @iuser They are not at all misleading – David Heffernan Jul 16 '14 at 04:29