I did not say that everything under the sun is 32-bit, just that 32-bit code is not obsolete yet, nor will it be soon. If your computer is going to have more than 4 GB of RAM, then it will need a 64-bit processor and a 64-bit OS to take advantage of it. Even 32-bit programs get benefit from this as the operating system can give them more memory. Back on the older 32-bit only systems, you'd have to keep back half the ram for windows. I cannot go into specifics on how this works because honestly I've never cared enough to learn X86 assembly far enough to write my own virtual memory management, but there are many books on Windows if you're interested in specifically how Windows manages memory. The last time I had to go there, I used Windows Internals. That's not a bad book and it's on Bookshare with decent quality as I recall. The key point here is that letting your OS access more than 4 GB of ram is a super good thing even if your app can't.
If I'm down in C++ land and I'm doing mathematical code, 64-bit code may help. but as soon as we're talking about something like BGT or Python, the only benefit is the Ram. Since you can't reasonably write apps that use more than 4 GB of ram (I'd say that even more than 2 is pushing it), you don't get anything. I only have 8, and my system is a bit above average. If we count the OS and the things I have running in the background, we're down to about 5. If I open your game that uses more than 4 GB and then open Firefox, we're probably looking at near continuous swapping of pages from the hard drive to RAM. This is way beyond bad for system performance.
A quick bit of math. On a 32-bit platform, a linked list of ints is 12 bytes per item: the previous pointer, the next pointer, and the value itself. On a 64-bit platform, pointers double in size. This raises us to 20 bytes per item. If you push the 4 GB limit and are using any pointer-heavy data structures, something which is quite common, switching to 64-bit code will give you more ram. But it'll also push up your ram requirement, possibly quite respectably. I did have a factual error in my post: C/C++ ints do not change size. Longs can, but this appears to only be true on OS X. But pointers are still pretty damning. I also can't speak for other languages, i.e. Purebasic which is free to do whatever it pleases; pointers pretty much have to be 8 bytes, and that's the only constant across all 64-bit supporting languages.
As for speed, it won't help for most apps. Our processors have grown in performance exponentially, but ram hasn't. Nowadays, your app is going to spend a lot of time waiting on ram. Once you're in a language without the JIT, you lose most gains from having a processor with more registers. I have done tuning in Libaudioverse along these lines, and it's difficult and counterintuitive. If you're at a level above where you can do this tuning, then it's not worth worrying about it at all. It may be possible to do it in something like java, but your solution is going to be fragile and depend on how kind the JIT is feeling today. I'm not sure if there are any instruction set extensions that only work on a 64-bit processor, but I don't think so. And even if there are, they're not usually a super big deal unless you're going out of your way to use intrinsics or write assembly for the simple reason that your compiler can't prove necessary conditions to automatically use them to itself.
But the biggest problem is the practical one. If you have a DLL compiled as a 64 bit assembly, you can only use it in 64 bit processes. If even one of your dlls is 32 bit only, you have to switch all of them. Moving a body of C/C++ code from 32 bit to 64 bit can be very difficult depending on what specifically it does. And then not everyone can run it: 32 bit systems are certainly cheaper, and we have the aforementioned comeback on the windows tablets that only have 1 or 2 GB of ram. So now you have to compile your app and everything in it twice and put out two versions. Since you're not likely to actually see any real benefit in most things and it's going to significantly up your ram footprint anyway, you might as well compile as 32 bit and be done with it. People who truly need 64 bit like to have math and science in their job descriptions, and this isn't us. Maybe there's something in audiogame programming that can only be done in or would benefit greatly from 64-bit processors. But I have never, ever, ever seen even a hint of such.
But really I made the original comment because the OP is almost certainly using the DLL with something that is 32-bit, there's like 4 or 5 options for developer command prompt, and using the wrong one is going to give you a DLL for the wrong architecture. This leads to fun error messages down the road.
And for the record, I don't assume I know everything. I don't comment on threads for which I don't know the answer. I say I think when I am unsure. I'm not sure what you want me to do, Ethin, pretend I don't have answers? I've been working with C++ for almost 10 years. I've been working with C++ at the level of a career C++ programmer for the last year and a half. I have gone through an entire computer science curriculum which I will be finishing in May including 4 classes that talk about this low level stuff. One of them involved writing programs for a Texas Instruments microcontroller. Another involved a 12-page research paper and presentation on how Windows works. If you told me right now that I needed to start teaching a C++ class on Monday or I'd die, that wouldn't really be a problem. In fact, I'd be thrilled; my ideal job is teaching. I think that if anyone is qualified to talk about it, up to and including saying that it's probably the wrong tool for the job, it's me. I submit as evidence Libaudioverse, which you can feel free to download from Github and which I would show to any employer as an example of high-quality, well organized C++. I'd even expect them to hire me.
My BlogTwitter: @ajhicks1992