473,546 Members | 2,196 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

build C++ COM for 64-bit platform

Hello everyone,
I am developing C++ COM native code (unmanaged C++) using Visual Studio
2005. I do not take any new features of 64-bit platform, and currently my
code runs fine on 32-bit platform (e.g. Windows XP SP2).

Now I am researching how to build my code for 64-bit platform (e.g. Windows
2003 Server 64-bit R2)? Any options I need to specify in Visual Studio 2005?
The best solution to me is to make a single build for both 32-bit and 64-bit
platforms, is that possible?
thanks in advance,
George
Oct 14 '07 #1
28 2711
Hi George!
I am developing C++ COM native code (unmanaged C++)
Then a better newsgroup is:
microsoft.publi c.vc.language

using Visual Studio
2005. I do not take any new features of 64-bit platform, and currently my
code runs fine on 32-bit platform (e.g. Windows XP SP2).

Now I am researching how to build my code for 64-bit platform (e.g. Windows
2003 Server 64-bit R2)? Any options I need to specify in Visual Studio 2005?
What kind of COM?
InProc-DLL (e.g. ActiveX-Controls)

or OutProc COM-Server (exe)?
The best solution to me is to make a single build for both 32-bit and 64-bit
platforms, is that possible?
In general: A single build is not possible.

If you buildung an OutProc-COM-Server you can simply build the 32-bit
version and use it for both platforms.

If you build dll/ocx, you need to build two versions: one for 32 and one
for 64-Bit.
Simply add a new Configuration to your project.

--
Greetings
Jochen

My blog about Win32 and .NET
http://blog.kalmbachnet.de/
Oct 14 '07 #2
Thanks Jochen,
I am building in-process DLL COM. I think you mean I do not need to change
source code, but only need to make a new configuration in project, right?

If yes, could you recommend me some learning resources about how to create
such 64-bit configuration based on my working 32-bit project please?
regards,
George

"Jochen Kalmbach [MVP]" wrote:
Hi George!
I am developing C++ COM native code (unmanaged C++)

Then a better newsgroup is:
microsoft.publi c.vc.language

using Visual Studio
2005. I do not take any new features of 64-bit platform, and currently my
code runs fine on 32-bit platform (e.g. Windows XP SP2).

Now I am researching how to build my code for 64-bit platform (e.g. Windows
2003 Server 64-bit R2)? Any options I need to specify in Visual Studio 2005?

What kind of COM?
InProc-DLL (e.g. ActiveX-Controls)

or OutProc COM-Server (exe)?
The best solution to me is to make a single build for both 32-bit and 64-bit
platforms, is that possible?

In general: A single build is not possible.

If you buildung an OutProc-COM-Server you can simply build the 32-bit
version and use it for both platforms.

If you build dll/ocx, you need to build two versions: one for 32 and one
for 64-Bit.
Simply add a new Configuration to your project.

--
Greetings
Jochen

My blog about Win32 and .NET
http://blog.kalmbachnet.de/
Oct 14 '07 #3
"George" <Ge****@discuss ions.microsoft. comwrote in message
news:C5******** *************** ***********@mic rosoft.com...
Hello everyone,
I am developing C++ COM native code (unmanaged C++) using Visual Studio
2005. I do not take any new features of 64-bit platform, and currently my
code runs fine on 32-bit platform (e.g. Windows XP SP2).

Now I am researching how to build my code for 64-bit platform (e.g.
Windows
2003 Server 64-bit R2)? Any options I need to specify in Visual Studio
2005?
The best solution to me is to make a single build for both 32-bit and
64-bit
platforms, is that possible?
thanks in advance,
George

Keep your COM server DLL 32 bit, unless you really need the 64 bit address.
Your 32 bit DLL will run as expected on 64 bit windows as long as the
clients remain 32bit too.

Willy.
Oct 14 '07 #4
Hi Willy!
Keep your COM server DLL 32 bit, unless you really need the 64 bit
address. Your 32 bit DLL will run as expected on 64 bit windows as long
as the clients remain 32bit too.
I thought 64-Bit executable can not consume 32-bit DLLs... so it will
not work if the EXE is 64-bit.
They need to provide two separat DLLs!

--
Greetings
Jochen

My blog about Win32 and .NET
http://blog.kalmbachnet.de/
Oct 14 '07 #5
Starting point:
http://msdn2.microsoft.com/en-us/lib...3s(VS.80).aspx

In my experience, additional tweaking is necessary after changing Visual
Studio 2005's settings. Some changes which were supposed to be made to
individual project configurations weren't made automatically. Also someone
has to remind both MSDN and Visual Studio managers that C++ identifiers
WIN64 and _WIN64 are not identical.

If client code uses type IntPtr (or if you have 64-bit clients which need
64-bit pointers) then the idl type is __int3264. In my experience, things
still break with some clients. I'm still experimenting.
"George" <Ge****@discuss ions.microsoft. comwrote in message
news:C5******** *************** ***********@mic rosoft.com...
Hello everyone,
I am developing C++ COM native code (unmanaged C++) using Visual Studio
2005. I do not take any new features of 64-bit platform, and currently my
code runs fine on 32-bit platform (e.g. Windows XP SP2).

Now I am researching how to build my code for 64-bit platform (e.g.
Windows
2003 Server 64-bit R2)? Any options I need to specify in Visual Studio
2005?
The best solution to me is to make a single build for both 32-bit and
64-bit
platforms, is that possible?
thanks in advance,
George
Oct 15 '07 #6
Thanks Willy,
I want to confirm with you that I do not need a separate build for x64
platform, right?
regards,
George

"Willy Denoyette [MVP]" wrote:
"George" <Ge****@discuss ions.microsoft. comwrote in message
news:C5******** *************** ***********@mic rosoft.com...
Hello everyone,
I am developing C++ COM native code (unmanaged C++) using Visual Studio
2005. I do not take any new features of 64-bit platform, and currently my
code runs fine on 32-bit platform (e.g. Windows XP SP2).

Now I am researching how to build my code for 64-bit platform (e.g.
Windows
2003 Server 64-bit R2)? Any options I need to specify in Visual Studio
2005?
The best solution to me is to make a single build for both 32-bit and
64-bit
platforms, is that possible?
thanks in advance,
George


Keep your COM server DLL 32 bit, unless you really need the 64 bit address.
Your 32 bit DLL will run as expected on 64 bit windows as long as the
clients remain 32bit too.

Willy.
Oct 15 '07 #7
Thanks Jochen,
From your reply, I think we are talking about two different things. My
question is whether my x86 32bit DLL could work on 64bit platform, but you
are talking about 64-bit exe can not work on 32-bit platform.

Question again, is it workable and safe to let 32-bit DLL work on 64-bit
platform? :-)
regards,
George

"Jochen Kalmbach [MVP]" wrote:
Hi Willy!
Keep your COM server DLL 32 bit, unless you really need the 64 bit
address. Your 32 bit DLL will run as expected on 64 bit windows as long
as the clients remain 32bit too.

I thought 64-Bit executable can not consume 32-bit DLLs... so it will
not work if the EXE is 64-bit.
They need to provide two separat DLLs!

--
Greetings
Jochen

My blog about Win32 and .NET
http://blog.kalmbachnet.de/
Oct 15 '07 #8
Thanks Norman,
I am trying to create new configuration for 64-bit platform in Visual Studio
2005. I have tried that I could copy settings from existing configurations,
so I copy 32-bit debug configuration to a new 64-bit debug configuration. Is
it the correct operation?

What makes me confused is what platform should I select if I want to create
a build for 64-bit platform, in my environment, the choices are,

Mixed platforms
Any CPU
x86
x64
Win32

which one should I select?
regards,
George

"Norman Diamond" wrote:
Starting point:
http://msdn2.microsoft.com/en-us/lib...3s(VS.80).aspx

In my experience, additional tweaking is necessary after changing Visual
Studio 2005's settings. Some changes which were supposed to be made to
individual project configurations weren't made automatically. Also someone
has to remind both MSDN and Visual Studio managers that C++ identifiers
WIN64 and _WIN64 are not identical.

If client code uses type IntPtr (or if you have 64-bit clients which need
64-bit pointers) then the idl type is __int3264. In my experience, things
still break with some clients. I'm still experimenting.
"George" <Ge****@discuss ions.microsoft. comwrote in message
news:C5******** *************** ***********@mic rosoft.com...
Hello everyone,
I am developing C++ COM native code (unmanaged C++) using Visual Studio
2005. I do not take any new features of 64-bit platform, and currently my
code runs fine on 32-bit platform (e.g. Windows XP SP2).

Now I am researching how to build my code for 64-bit platform (e.g.
Windows
2003 Server 64-bit R2)? Any options I need to specify in Visual Studio
2005?
The best solution to me is to make a single build for both 32-bit and
64-bit
platforms, is that possible?
thanks in advance,
George

Oct 15 '07 #9
I have tried that I could copy settings from existing configurations, so I
copy 32-bit debug configuration to a new 64-bit debug configuration.
I did the same. In my experience, further tweaking was needed after that.
Mixed platforms
Any CPU
x86
x64
Win32
Here is my most recent set of guesses. Since my solution was already Mixed
platforms, I kept that selection the same. In the configuration settings,
the C++ project's platform said Win32, so I changed that to x64. This
choice of settings has been more successful so far than my previous guesses,
but I'm not finished yet.
"George" <Ge****@discuss ions.microsoft. comwrote in message
news:40******** *************** ***********@mic rosoft.com...
Thanks Norman,
I am trying to create new configuration for 64-bit platform in Visual
Studio
2005. I have tried that I could copy settings from existing
configurations,
so I copy 32-bit debug configuration to a new 64-bit debug configuration.
Is
it the correct operation?

What makes me confused is what platform should I select if I want to
create
a build for 64-bit platform, in my environment, the choices are,

Mixed platforms
Any CPU
x86
x64
Win32

which one should I select?
regards,
George

"Norman Diamond" wrote:
>Starting point:
http://msdn2.microsoft.com/en-us/lib...3s(VS.80).aspx

In my experience, additional tweaking is necessary after changing Visual
Studio 2005's settings. Some changes which were supposed to be made to
individual project configurations weren't made automatically. Also
someone
has to remind both MSDN and Visual Studio managers that C++ identifiers
WIN64 and _WIN64 are not identical.

If client code uses type IntPtr (or if you have 64-bit clients which need
64-bit pointers) then the idl type is __int3264. In my experience,
things
still break with some clients. I'm still experimenting.
"George" <Ge****@discuss ions.microsoft. comwrote in message
news:C5******* *************** ************@mi crosoft.com...
Hello everyone,
I am developing C++ COM native code (unmanaged C++) using Visual Studio
2005. I do not take any new features of 64-bit platform, and currently
my
code runs fine on 32-bit platform (e.g. Windows XP SP2).

Now I am researching how to build my code for 64-bit platform (e.g.
Windows
2003 Server 64-bit R2)? Any options I need to specify in Visual Studio
2005?
The best solution to me is to make a single build for both 32-bit and
64-bit
platforms, is that possible?
thanks in advance,
George

Oct 15 '07 #10

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

0
1788
by: HoT!cE | last post by:
When I try to build a storedprocedure using db2 develop center I get this error msg: DB2INST1.PROCEDURE1 - Build started. C:\PROGRA~1\IBM\SQLLIB\java\jdk\bin\javac -classpath ".;C:\PROGRA~1\IBM\SQLLIB\java\db2java.zip;C:\PROGRA~1\IBM\SQLLIB\java\runtime.zip;C:\PROGRA~1\IBM\SQLLIB\java\sqlj.zip" PROCEDURE1.java DB2INST1.PROCEDURE1 - Javac...
0
2305
by: Stephen Cairns | last post by:
I have the following rpx file in a .Net solution and I am getting the following build errors which are driving me crazy and ive no idea where I have went wrong. The build errors I'm getting are as follows: - 'CheckBox' is an ambiguous reference 'CheckBox' is an ambiguous reference 'Label' is an ambiguous reference etc....................
0
3112
by: dboileau | last post by:
Can anyone help me out with this error, I am trying to compile mysql with gcc 3.4.6 (Compiled from source) using CC=gcc CFLAGS="-O3 -mcpu=v8 -Wa,-xarch=v8plusa" \ CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti -mcpu=v8 -Wa,-xarch=v8plusa" \ ../configure --prefix=/opt/build/mysql --with-low-memory \ --enable-assembler...
6
4914
by: dotnetnoob | last post by:
i would like to know how i can build xpath expression dynamiclly. let's say i have a following xml file: <EventEnrollment InstanceNumber = "675"> <EventSource> <ObjectReference ObjectKey="xxxxx"> .. .. .. <EventEnrollment InstanceNumber = "676">
3
1815
by: Eric J. Holtman | last post by:
Am I missing something obvious in the 2005 Visual Studio portion of SQL Server? I have a database design, with a bunch of tables, views, stored procedures, etc, etc. I want to store each object in a separate file, so I can keep them in Source Safe. Is there a command that will "rebuild" the database, issuing the CREATE TABLE, VIEW and...
10
10668
by: krunalb | last post by:
Hi, I am trying to shift unsigned long long value by 64 bits and this is what i get #include <stdio.h> int main() { unsigned short shiftby= 64;
2
2291
by: Christian | last post by:
Hi, I'm having problems with python 2.4.4 built on a Celeron D. I had problems earlier with that processor which I think has understands some 64 bit instructions (whatever that means) but is still 32 bit. Thus when e.g. trying to build numpy with the self built python I get that error: Traceback (most recent call last): File "setup.py",...
1
1815
by: ushasivaram | last post by:
hi, while compiling my build in REDHAT 9 i got the following error saying as: /modules/opensrc/openssl-0.9.8d/ssl sslhttp.c -o ../../../../../modules/system/ENTR-V4/lx/obj/sslhttp.o In file included from sslhttp.c:64: ../../porting/lx/driver/fleet/fleetcmn.h:489:30: warning: crypto/cryptodev.h: No such file or directoryIn file included...
1
2357
by: =?Utf-8?B?UGF1bCBQaGlsbGlwcw==?= | last post by:
I have read many things about this but I haven't got a clear vision on what to do if anything about this. I have a system that tries to find holes in my web site. One of the things it has found and has been sent to me is an Invalid_Viewstate exception. I will provide the stack trace below. If you read down the stack trace it talks...
4
1581
by: M.-A. Lemburg | last post by:
Hi Robin, On 2008-10-23 17:55, Robin Becker wrote: That looks like a classical name clash between C header files. It also suggests that you have 64-bit client libs of MySQL installed. As long as the MySQL client lib is built as 32-bit lib, you shouldn't
0
7698
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. ...
0
7947
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that...
1
7461
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For...
0
7794
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the...
1
5361
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes...
0
5080
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert...
0
3472
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
1
1922
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
0
747
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.