Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > ASP .Net > ASP .Net Building Controls > Custom Controls on x64

Reply
Thread Tools

Custom Controls on x64

 
 
Leslie
Guest
Posts: n/a
 
      10-23-2007
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
 
 
 
 
Walter Wang [MSFT]
Guest
Posts: n/a
 
      10-25-2007
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 ((E-Mail Removed), 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
 
 
 
 
Leslie
Guest
Posts: n/a
 
      10-25-2007
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:

> 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 ((E-Mail Removed), 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
 
Walter Wang [MSFT]
Guest
Posts: n/a
 
      10-29-2007
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 ((E-Mail Removed), 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
 
Walter Wang [MSFT]
Guest
Posts: n/a
 
      10-29-2007
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 ((E-Mail Removed), 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
 
Leslie
Guest
Posts: n/a
 
      10-29-2007
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:

> 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 ((E-Mail Removed), 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
 
Walter Wang [MSFT]
Guest
Posts: n/a
 
      10-30-2007
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 ((E-Mail Removed), 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
 
Leslie
Guest
Posts: n/a
 
      10-30-2007
Walter,

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

Leslie

""Walter Wang [MSFT]"" wrote:

> 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 ((E-Mail Removed), 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

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

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
databound custom controls vs composite databound custom controls rodchar ASP .Net 0 11-26-2007 03:51 PM
Custom Controls: Import a custom namespace and use its functions within user ASP .Net 1 07-19-2007 11:03 AM
Custom Control : One custom property to array of controls anon ASP .Net Web Controls 0 01-15-2005 11:32 AM
User Controls and Custom Controls Dag ASP .Net 5 05-08-2004 07:24 AM
IntelliSense on Web User Controls and Web Custom Controls Axel Dahmen ASP .Net 1 11-12-2003 06:12 AM



Advertisments