FFI with 64bit Ruby and a 32bit dll - ruby

I am hoping to gather some clarification and a better understanding of an issue I'm currently dealing with.
I wrote some simple test code which pulled in a 32bit dll file using FFI. My simple tests worked fine. Now, I started this project on a 32bit computer. When I went to continue the project, I was using a 64bit computer with 64bit Ruby installed.
I've tested this both on the 64bit production server and my 64bit laptop. I've done some research and I think I've gathered the issue, but I need a better understanding and verification.
So, for clarification, the dll file I need to utilize is 32bit. I've gotten a simple application functioning on a 32bit computer, but I am unable to get it running on the either of two 64bit computers.
In order to tie in with a 32bit dll, do I have to be running 32bit ruby? Will FFI only tie in with a dll of equal (32/64) architecture?
Also, best I can find, there is no 64bit version of the dll file as it's essentially legacy support. And, most production environments are 64bit (windows).

Related

Developing on Windows 10 64-bit, backwards compatibility with Windows XP 32-bit

I'm developing and compiling on a Windows 10 64-bit machine. We've discovered an issue that seems to be related to machines running 32-bit machines. If I compile the most current code from a 32-bit machine, the issue goes away.
I'd rather not have to develop on one machine and compile from another if I don't have to. I'd rather not set up a VirtualMachine running a 32-bit version of Windows, just to compile, if I don't have to. So, how are people in the "real world" handling this? I'm using Visual Basic 6 (I know, I know. But "Just upgrade to .NET" is not the answer I'm looking for. I'm working on it. It will take some time. A lot of time.).

Do I have to make allowances for Inno setups on 64-bit Windows?

We've got an ancient of days VB6 app which sometimes needs to be updated and installed on our user's machines. We've begun using Inno, and especially InnoIDE, to make the setup.exe, to get this onto our user's PCs. However, I'm wondering about 64-bit Windows, and Inno setups. We've got a couple of machines in-house, which are 64-bit versions of Windows 7 Professional. I've successfully installed our app, using the setup from Inno, onto a 32-bit Windows XP machine. Can I use the same setup on our 64-bit Windows 7 machines? Will it put the .exe into the C:\Program Files (x86)\ directory structure automatically, or do I have to make allowances for 64-bit versions of Windows?
If your app is only 32-bit, then Inno will automatically take care of doing everything correctly.
Only if your app is mixed or 64-bit do you need to do anything special as rushman says.
There is a very good section in the help file that explains the changes needed.
If you're installing any 64-bit device drivers, the calls to most newdev and setupapi entry points will fail with error code 0xE0000235 (ERROR_IN_WOW64). Those calls only work when invoked from 64-bit code, and Inno doesn't compile 64-bit installers yet. You may work around by using pnputil.exe, by adding a 64-bit stub executable, or by switching to WiX.
For 64-bit INNO intallations you generally only need to add one setup section directive and, obviously, add the 64-bit versions of DLL's and EXE's to the compiled installer.
The setup section directive is:
ArchitecturesInstallIn64BitMode=x64

Microsoft Windows 64-bit application development best practises installation folder

My problem is that a vendor is providing me with a 64bit application (packed in a 64bit installer) but it goes and installs to the x86 (Program Files) Folder and he keeps telling me its OK but I want it to install in the Program Files directory; as the 32 bit version does that and scripts for the app are developed based on this assumption.
Can someone direct me to the Microsoft recommended best practices for 64bit applications(links).
Thanks in advance.
This may help:
About Windows Installer on 64-Bit Operating Systems
http://msdn.microsoft.com/en-us/library/aa367451.aspx
Is your vendor installing the app via an MSI file? If so, their app setup generator (WIX, InstallShield, etc) should be creating MSI's that store their components in the correct places.
If not and they're installing using a custom script, suggest they start investing in learning WIX ;)
Either way, they should be following the recommended guidelines and installing 64-bit code and 32-bit code to the correct locations and modifying the correct registry trees accordingly.

Are there 32- and 64-bit versions of Microsoft.Sharepoint.dll?

Does Microsoft.Sharepoint.dll come in both 32bit and 64bit flavors?
So if I develop on a 64bit machine. Do you think if I install MOSS 32bit, I will be able to deploy successfully to a 32bit server. Or can I just copy the 32bit DLL's inplace of my 64bit DLLs?
Looks like it: http://support.microsoft.com/kb/970359
Yes but be careful when writing code and referencing the dll from two different machines. You may be dealing with version differences for instance writing code against MOSS 2007 and using that dll will not work when porting that over to MOSS 2003.
Yes, there is a 64 bit version of that dll to build against - you can download from here:
http://www.microsoft.com/downloads/details.aspx?FamilyId=0A50DA0F-7C94-4814-BBFE-2B66FE4A9087&displaylang=en

Missing Visual Studio features when running in 64-bit mode

Can someone tell me why I don't have all of the dev studio windows available to me when I develop on a 64-bit platform? I upgraded my dev desktop box to server 2003 x64 to match our deployment platform. Since then (I'm using VS2005) I've noticed that several windows aren't available. I can't view Processes (which is the most annoying) so I don't know which processes I'm attached to. I can attach to a process fine, but it won't show me what is already running under the debugger. There are others, but that's the one that sticks out in my mind at the moment.
My question is where are these limitations of developing under 64 bit documented (assuming they are)? (Of course, I also get the "Edit/Continue" warning dialog all the time telling me that doesn't work in 64-bit)
Also, is VS2008 any better under 64 bit?
Follow-up: Apparently my question is a little bit vague. I'm developing a 64-bit app on a 64-bit development environment. "Recompile it in x86" doesn't solve my problems.
Follow-up #2: I'm giving it one more shot. I WANT TO DEBUG A 64 BIT PROGRAM ON A 64 BIT ENVIRONMENT AND I DON'T HAVE ALL OF THE VISUAL STUDIO FEATURES SHOWING UP. HOW DO I GET THEM?
Follow-up #3: I just installed XP 64 (previously I was using Server 2003 64-bit) and those features all showed up again (Process window, etc). Apparently the server version of windows doesn't provide all of the dev features.
Can anyone tell me why?
"Edit/Continue" can work if you change the build setting to X86 :)
Here was the suggestion from StackOverflow about it.
I had some problem with NUNIT when debugging code. The solution was to use the special program in the \bin\ folder Nunit-x86.exe for old code built in x86 and use the Nunit.exe for x64 built.

Resources