HighTechTalks DotNet Forums  

Custom Controls on x64

ASP.net Building Controls microsoft.public.dotnet.framework.aspnet.buildingcontrols


Discuss Custom Controls on x64 in the ASP.net Building Controls forum.



Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old   
Leslie
 
Posts: n/a

Default Custom Controls on x64 - 10-23-2007 , 05:37 PM






I have developed a Windows Forms Control (WFC) which is used in a web page.
The control is developed in C# using the 2.0 framework and the control
invokes a dll that is written in C++. I reference the WFC using the following
syntax:
<object id="SmsInfo" height="1" width="1"
classid="http:SmsInfo.dll#SmsInfo.GetSmsInfo" >
The control then makes calls to C++ dll. Everything works great in 32 bit.
However, I would like to provide 64 bit support.
If the user browses to my web site using the x64 version of IE do I need a
different version of my custom WFC or will the C# WFC work correctly using
the x64 version of the 2.0 framework?

Secondly, I will need to compile an x64 version of my C++ dll. How will the
browser (and my WFC) know which version of the dll to use? Will I need to
build two seperate versions of the WFC and reference the x64 or x32 version
specifically in each version of the WFC? Other than the x64 or x32
reference, the WFC should be identical in both versions.

thanks,

Leslie
Leslie


Reply With Quote
  #2  
Old   
Walter Wang [MSFT]
 
Posts: n/a

Default RE: Custom Controls on x64 - 10-24-2007 , 09:32 PM






Hi Leslie,

Based on my understanding, you should be able to compile your C# Windows
Forms control library using targetd platform "AnyCPU". This is the also
default platform type, assemblied compiled in this way is process
independent. If it's executed or loaded by 32-bit os or host process, it
will be JIT(just-in-time) compiled as 32-bit native code; and the same for
64-bit.

For your C++ DLL, you have to compile two versions, one for 32-bit, will be
installed to %windir%\syswow64 on 64-bit os, installed to %windir%\system32
on 32-bit os. For 64-bit version, install to %windir%\system32.

Hope this helps.


Regards,
Walter Wang (wawang (AT) online (DOT) microsoft.com, remove 'online.')
Microsoft Online Community Support

==================================================
When responding to posts, please "Reply to Group" via your newsreader so
that others may learn and benefit from your issue.
==================================================

This posting is provided "AS IS" with no warranties, and confers no rights.


Reply With Quote
  #3  
Old   
Leslie
 
Posts: n/a

Default RE: Custom Controls on x64 - 10-25-2007 , 09:11 AM



Walter,

Thanks for your help. I believe I understand the approach for the C# code,
and that should work well. Currently the C++ DLL is downloaded from the web
site as needed. Is there no way to make that approach continue to work in the
mixed 32 bit and 64 bit environments?

Thanks,

Leslie

""Walter Wang [MSFT]"" wrote:

Quote:
Hi Leslie,

Based on my understanding, you should be able to compile your C# Windows
Forms control library using targetd platform "AnyCPU". This is the also
default platform type, assemblied compiled in this way is process
independent. If it's executed or loaded by 32-bit os or host process, it
will be JIT(just-in-time) compiled as 32-bit native code; and the same for
64-bit.

For your C++ DLL, you have to compile two versions, one for 32-bit, will be
installed to %windir%\syswow64 on 64-bit os, installed to %windir%\system32
on 32-bit os. For 64-bit version, install to %windir%\system32.

Hope this helps.


Regards,
Walter Wang (wawang (AT) online (DOT) microsoft.com, remove 'online.')
Microsoft Online Community Support

==================================================
When responding to posts, please "Reply to Group" via your newsreader so
that others may learn and benefit from your issue.
==================================================

This posting is provided "AS IS" with no warranties, and confers no rights.



Reply With Quote
  #4  
Old   
Walter Wang [MSFT]
 
Posts: n/a

Default RE: Custom Controls on x64 - 10-28-2007 , 09:21 PM



Hi Leslie,

Sorry for the delay. I was not in office last Friday.

This is a quick note to let you know that I am performing research on this
issue and will get back to you as soon as possible. I appreciate your
patience.


Regards,
Walter Wang (wawang (AT) online (DOT) microsoft.com, remove 'online.')
Microsoft Online Community Support

==================================================
When responding to posts, please "Reply to Group" via your newsreader so
that others may learn and benefit from your issue.
==================================================

This posting is provided "AS IS" with no warranties, and confers no rights.


Reply With Quote
  #5  
Old   
Walter Wang [MSFT]
 
Posts: n/a

Default RE: Custom Controls on x64 - 10-29-2007 , 06:00 AM



Hi Leslie,

I was wondering how's currently you're download the C++ DLL and where is it
installed to?

There's one possible solution to this is to use dynamic P/Invoke to load
different versions of the DLL according to 32-bit or 64-bit environment
that the control is running in. You can determine this by checking
IntPtr.Size, if it's equal to 4, it's 32-bit, if it's equal to 8, it's
64-bit.

#Junfeng Zhang's Windows Programming Notes : Dynamic PInvoke
http://blogs.msdn.com/junfeng/archiv...14/181932.aspx


Please feel free to let me know if there's anything unclear. Thanks.


Regards,
Walter Wang (wawang (AT) online (DOT) microsoft.com, remove 'online.')
Microsoft Online Community Support

==================================================
When responding to posts, please "Reply to Group" via your newsreader so
that others may learn and benefit from your issue.
==================================================

This posting is provided "AS IS" with no warranties, and confers no rights.


Reply With Quote
  #6  
Old   
Leslie
 
Posts: n/a

Default RE: Custom Controls on x64 - 10-29-2007 , 10:01 AM



Currently I have a Windows Forms Control which is downloaded to the client
browser. The WFC uses the C++ dll. The reference that the C# control holds on
the C++ dll includes the property of "Copy Local=True". When the WFC is
downloaded, the C++ dll is downloaded as well.

Thanks for your help.

Leslie

""Walter Wang [MSFT]"" wrote:

Quote:
Hi Leslie,

I was wondering how's currently you're download the C++ DLL and where is it
installed to?

There's one possible solution to this is to use dynamic P/Invoke to load
different versions of the DLL according to 32-bit or 64-bit environment
that the control is running in. You can determine this by checking
IntPtr.Size, if it's equal to 4, it's 32-bit, if it's equal to 8, it's
64-bit.

#Junfeng Zhang's Windows Programming Notes : Dynamic PInvoke
http://blogs.msdn.com/junfeng/archiv...14/181932.aspx


Please feel free to let me know if there's anything unclear. Thanks.


Regards,
Walter Wang (wawang (AT) online (DOT) microsoft.com, remove 'online.')
Microsoft Online Community Support

==================================================
When responding to posts, please "Reply to Group" via your newsreader so
that others may learn and benefit from your issue.
==================================================

This posting is provided "AS IS" with no warranties, and confers no rights.



Reply With Quote
  #7  
Old   
Walter Wang [MSFT]
 
Posts: n/a

Default RE: Custom Controls on x64 - 10-29-2007 , 10:10 PM



Hi Leslie,

So the C++ dll is a managed assembly built with C++/CLI, right? If this is
the case, you can try to use /clr:safe switch to generate safe IL code of
the C++ managed assembly. In this case, the generated IL code is also
processor independent, which means it will also be JIT compiled as 32-bit
or 64-bit native code according to the host process.

I have a related discussion here for your reference:

http://msdn.microsoft.com/newsgroups...icrosoft.publi
c.dotnet.framework.windowsforms.controls&tid=6e96e bc9-5507-425a-a27b-0950d94
a3584&m=1&p=1

Regards,
Walter Wang (wawang (AT) online (DOT) microsoft.com, remove 'online.')
Microsoft Online Community Support

==================================================
When responding to posts, please "Reply to Group" via your newsreader so
that others may learn and benefit from your issue.
==================================================

This posting is provided "AS IS" with no warranties, and confers no rights.


Reply With Quote
  #8  
Old   
Leslie
 
Posts: n/a

Default RE: Custom Controls on x64 - 10-29-2007 , 10:27 PM



Walter,

This is good to know. Thanks very much for the additional information.

Leslie

""Walter Wang [MSFT]"" wrote:

Quote:
Hi Leslie,

So the C++ dll is a managed assembly built with C++/CLI, right? If this is
the case, you can try to use /clr:safe switch to generate safe IL code of
the C++ managed assembly. In this case, the generated IL code is also
processor independent, which means it will also be JIT compiled as 32-bit
or 64-bit native code according to the host process.

I have a related discussion here for your reference:

http://msdn.microsoft.com/newsgroups...icrosoft.publi
c.dotnet.framework.windowsforms.controls&tid=6e96e bc9-5507-425a-a27b-0950d94
a3584&m=1&p=1

Regards,
Walter Wang (wawang (AT) online (DOT) microsoft.com, remove 'online.')
Microsoft Online Community Support

==================================================
When responding to posts, please "Reply to Group" via your newsreader so
that others may learn and benefit from your issue.
==================================================

This posting is provided "AS IS" with no warranties, and confers no rights.



Reply With Quote
Reply




Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.