Solved

dll for 32bit and 64bit

Posted on 2012-03-27
9
549 Views
Last Modified: 2012-04-02
hello there,
I have a source code for a 32bit and 64bit dll file on VS2010..
I would like to know how to make the app load the correct dll file on run time..
so if its a windows 32bit load the 32bit dll or if its 664bit then load the correct dll file..
how can I do this?
0
Comment
Question by:XK8ER
  • 2
  • 2
  • 2
  • +3
9 Comments
 
LVL 75

Accepted Solution

by:
käµfm³d   👽 earned 500 total points
ID: 37772938
You can check the size of an IntPtr. If it's 4, then you are in 32-bit; if it's 8, then you are on 64-bit. Then you can load the assembly dynamically.

e.g.

Imports System.Reflection

...

Dim loadedAssem As Assembly = Nothing

If System.Runtime.InteropServices.Marshal.SizeOf(GetType(IntPtr)) = 8 Then
    loadedAssem = Assembly.LoadFile("path\to\64bit\assembly.dll")
Else
    loadedAssem = Assembly.LoadFile("path\to\32bit\assembly.dll")
End If

Open in new window

0
 
LVL 16

Expert Comment

by:HooKooDooKu
ID: 37774149
VS2010 gives you all sorts of build options.  Why not simply name the resulting application and DLL differently for 32 and 64 bit versions of the project:
My.exe + My.dll
My64.exe + My64.dll.
Have the 32 bit version link to My.lib import library and the 64 bit version link to My64.lib import library.
0
 
LVL 1

Author Comment

by:XK8ER
ID: 37774167
somehow I have a project that works a bi different..
when I go to VS2010 > properties > references > I see component Name.
when I compile the exe file and run it.. it knows which dll file to load 32 or 64 dll..
both dll files are located in C:\Windows\System32
hows that possible?
0
 
LVL 83

Expert Comment

by:CodeCruiser
ID: 37774209
May be its a loader component that you are referencing and it loads and uses a different DLL based on 32 vs 64 bit using the technique suggested by kaufmed.
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 1

Author Comment

by:XK8ER
ID: 37774385
when I look at the path from
VS2010 > properties > references > componentName.

Interop.componentName.dll
0
 
LVL 44

Expert Comment

by:AndyAinscow
ID: 37775095
>>I have a source code for a 32bit and 64bit dll file on VS2010..

OK - BUT that may well be different technology to the other dll you talk about.
A .net program/library does NOT compile to a specific executable code, it compiles to an intermediate which should be 32/64 bit independant.  When the app/dll then runs the .net environment compiles it to either the 32 bit or the 64 bit version as required.  So one .net dll will cover both 32 and 64 bit operating systems.
0
 
LVL 75

Expert Comment

by:käµfm³d 👽
ID: 37776114
When the app/dll then runs the .net environment compiles it to either the 32 bit or the 64 bit version as required.  So one .net dll will cover both 32 and 64 bit operating systems.
Not to say I'm not doing something wrong, but I have run into issues where using a 3rd-party library that was compiled for a specific environment (ODP.NET) did force me to pick whether or not I was targeting a 32- or 64-bit environment in order to properly load the 3rd-party library.
0
 
LVL 44

Expert Comment

by:AndyAinscow
ID: 37776143
Hmmm - maybe instead of will I ought to have said should.
0
 
LVL 33

Expert Comment

by:sarabande
ID: 37781561
system32 should not contain 64-bit dlls. if it does nevertheless the dll either was never used, or the 64-bit program that loads it, explicitly uses the path to system32 folder, or the 64-bit dll isn't 64-bit but 32-bit (only the name contains 64 ???).

Sara
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Many of us here at EE write code. Many of us write exceptional code; just as many of us write exception-prone code. As we all should know, exceptions are a mechanism for handling errors which are typically out of our control. From database errors, t…
More often than not, we developers are confronted with a need: a need to make some kind of magic happen via code. Whether it is for a client, for the boss, or for our own personal projects, the need must be satisfied. Most of the time, the Framework…
You have products, that come in variants and want to set different prices for them? Watch this micro tutorial that describes how to configure prices for Magento super attributes. Assigning simple products to configurable: We assigned simple products…
Need to grow your business through quality cloud solutions? With everything required to build a cloud platform and solution, you may feel like the distance between you and the cloud is quite long. Help is here. Spend some time learning about the Con…

939 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

6 Experts available now in Live!

Get 1:1 Help Now