Solved

dll for 32bit and 64bit

Posted on 2012-03-27
9
579 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 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
SharePoint Admin?

Enable Your Employees To Focus On The Core With Intuitive Onscreen Guidance That is With You At The Moment of Need.

 
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
 
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 34

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

PeopleSoft Has Never Been Easier

PeopleSoft Adoption Made Smooth & Simple!

On-The-Job Training Is made Intuitive & Easy With WalkMe's On-Screen Guidance Tool.  Claim Your Free WalkMe Account Now

Question has a verified solution.

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

It’s quite interesting for me as I worked with Excel using vb.net for some time. Here are some topics which I know want to share with others whom this might help. First of all if you are working with Excel then you need to Download the Following …
Calculating holidays and working days is a function that is often needed yet it is not one found within the Framework. This article presents one approach to building a working-day calculator for use in .NET.
In this video, viewers will be given step by step instructions on adjusting mouse, pointer and cursor visibility in Microsoft Windows 10. The video seeks to educate those who are struggling with the new Windows 10 Graphical User Interface. Change Cu…
This is my first video review of Microsoft Bookings, I will be doing a part two with a bit more information, but wanted to get this out to you folks.

635 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