Going 64-bit, can't use Jet4 any more :(

Started by
6 comments, last by Adam_42 8 years, 3 months ago

Hi,

The application that I'm building so far hasn't been platform-specific (i.e. Win32/Win64), however I am now severely limited by 32-bit memory addressing (due to loading in a huge bitmap at startup, and creating a similarly-sized background bitmap in RAM). I have flicked my project over to x64, however the Jet 4.0 Access connection (whereby at runtime I can fire SQL queries to a local Access database to obtain datasets) no longer works. I have Googled that Ace12 could be a replacement, however I do not have this installed on my system.

My solution needs to be compatible out-of-the-box with x64 platforms, and so what is the best way for me to continue querying my database? I'd rather avoid requiring users to download extra software to get my project working.

Advertisement
If Ace12 (or other alternative libraries) is not a viable path, you could separate the data access layer to its own process, and use some kind of inter-process communication mechanism to call it.

Windows offers several options for this; RPC, TCP or UDP (sockets), named pipes and shared memory files come to mind immediately. All of these allow 32- and 64-bit processes to communicate with each other.

Niko Suni

Also, consider replacing the Jet engine with SQL Server :)

Niko Suni


I have Googled that Ace12 could be a replacement, however I do not have this installed on my system.
Install it then?

"I AM ZE EMPRAH OPENGL 3.3 THE CORE, I DEMAND FROM THEE ZE SHADERZ AND MATRIXEZ"

My journals: dustArtemis ECS framework and Making a Terrain Generator


I have Googled that Ace12 could be a replacement, however I do not have this installed on my system.
Install it then?

As I said, I'd rather avoid having the end users who download my application have to do the same. I'm looking for a solution (if one exists) that uses existing Win64 data access functionality.

Have you thought about SQLLite? It would just be some dependencies you supply with your package which I'm pretty sure you are already doing with Jet.


As I said, I'd rather avoid having the end users who download my application have to do the same. I'm looking for a solution (if one exists) that uses existing Win64 data access functionality.

Ship it with the application. Afaik MS provides "redistributables" to install dependencies like those (ie, MSVC runtime, D3D, .NET update, etc). Don't you have to do the same with Jet 4?

"I AM ZE EMPRAH OPENGL 3.3 THE CORE, I DEMAND FROM THEE ZE SHADERZ AND MATRIXEZ"

My journals: dustArtemis ECS framework and Making a Terrain Generator

If you've not enabled it already, set the /LARGEADDRESSAWARE linker flag, and you'll have 4GB of address space when running on 64-bit Windows in your 32-bit program.

If you're using C# there's some instructions for setting it at: http://stackoverflow.com/questions/2597790/can-i-set-largeaddressaware-from-within-visual-studio

This topic is closed to new replies.

Advertisement