I am trying to compile my apps (which uses 3rd party libraries) for the x64 platform. However selecting x64 from Build Configuration Manager from my VS2008 Pro doesn't seem to work. The binary does get created but my client wasn't able to get it to run on x64.
我正在尝试为x64平台编译我的应用程序(使用第三方库)。但是,从我的VS2008 Pro中从Build Configuration Manager中选择x64似乎不起作用。二进制文件确实已创建,但我的客户端无法让它在x64上运行。
I wonder if the 3rd party DLLs could be the cause. Anyone has any idea on this?
我想知道第三方DLL是否可能是原因。有人对此有任何想法吗?
5 个解决方案
#1
3
Do you have x64 versions of the third party libraries? If not you are out of luck. A process must either be fully x86 or x64, you can't mix and match libraries. If the libraries are DLLs then you still need the export libraries from an x64 build.
你有第三方库的x64版本吗?如果不是你就不走运了。进程必须是完全x86或x64,不能混合和匹配库。如果库是DLL,那么您仍然需要x64版本的导出库。
In what way does selecting the x64 configuration in VS not work?
在VS中选择x64配置的方式不起作用?
Updated: If your app is .NET and architecture neutral, then it will be loaded as 64 bit on 64 bit OS'es. However, if it relies on 32 bit DLLs then this will fail at run time. You can force your exe to always load 32 bit using the corflags utility.
更新:如果您的应用程序是.NET和体系结构中立,那么它将在64位操作系统上加载为64位。但是,如果它依赖于32位DLL,那么这将在运行时失败。您可以使用corflags实用程序强制您的exe始终加载32位。
#2
1
As Rob Walker said. You can find out more by using the "depends" program by SysInternals on an x64 machine.
正如Rob Walker所说。您可以在x64机器上使用SysInternals的“depends”程序找到更多信息。
#3
1
Managed to pinpoint the source of the problem. It was one of the setting (Encrypt IL Code) in the source code obfuscating tool (Intellilock 1.1.0.4) that made the binary failed to run in x64 environment.
管理以查明问题的根源。它是源代码混淆工具(Intellilock 1.1.0.4)中的设置(加密IL代码)之一,使得二进制文件无法在x64环境中运行。
Disabling this setting fixed the issue.
禁用此设置可解决此问题。
#4
0
"selecting x64 from Build Configuration Manager from my VS2008 Pro doesn't seem to work"
I'm not sure why you would be getting binaries at all but remember that the x64 tools are not installed by default. Go back and re-run your VC2008 installer, do a custom install, and, under the VC++ bit of the tree, make sure the checkbox for the 64-bit compiler is checked. If it is not, check it and run the install. Then try your build.
“从我的VS2008 Pro中选择构建配置管理器中的x64似乎不起作用”我不知道为什么你会得到二进制文件,但要记住默认情况下没有安装x64工具。返回并重新运行VC2008安装程序,执行自定义安装,并在树的VC ++位下,确保选中64位编译器的复选框。如果不是,请检查并运行安装。然后尝试你的构建。
You do need the 64-bit versions of the 3rd party dlls and you do need to get all your include and lib paths right and your output folders straight, but having the tool installed is the first step.
您确实需要第三方dll的64位版本,并且您需要将所有包含和库路径正确并且输出文件夹直接,但安装工具是第一步。
#5
0
My application does not has an installer. I created it in as a "portable app" with .NET2.0 as a pre-requisite.
我的应用程序没有安装程序。我将其作为“便携式应用程序”创建,并以.NET2.0作为先决条件。
I have posted the same request to the vendor. Still awaiting for them to revert if they have the x64 bit.
我已向供应商发布了相同的请求。如果他们有x64位,仍在等待他们恢复。
In the meantime I am in the process to purchase a copy of x64 Vista to personally test it out. I can't be sacrificing my users to test this out for me. I will keep this thread posted once I have new updates.
与此同时,我正在购买x64 Vista的副本以亲自测试它。我不能牺牲我的用户来测试这个。一旦有了新的更新,我会保留这个帖子。
Thanks.
#1
3
Do you have x64 versions of the third party libraries? If not you are out of luck. A process must either be fully x86 or x64, you can't mix and match libraries. If the libraries are DLLs then you still need the export libraries from an x64 build.
你有第三方库的x64版本吗?如果不是你就不走运了。进程必须是完全x86或x64,不能混合和匹配库。如果库是DLL,那么您仍然需要x64版本的导出库。
In what way does selecting the x64 configuration in VS not work?
在VS中选择x64配置的方式不起作用?
Updated: If your app is .NET and architecture neutral, then it will be loaded as 64 bit on 64 bit OS'es. However, if it relies on 32 bit DLLs then this will fail at run time. You can force your exe to always load 32 bit using the corflags utility.
更新:如果您的应用程序是.NET和体系结构中立,那么它将在64位操作系统上加载为64位。但是,如果它依赖于32位DLL,那么这将在运行时失败。您可以使用corflags实用程序强制您的exe始终加载32位。
#2
1
As Rob Walker said. You can find out more by using the "depends" program by SysInternals on an x64 machine.
正如Rob Walker所说。您可以在x64机器上使用SysInternals的“depends”程序找到更多信息。
#3
1
Managed to pinpoint the source of the problem. It was one of the setting (Encrypt IL Code) in the source code obfuscating tool (Intellilock 1.1.0.4) that made the binary failed to run in x64 environment.
管理以查明问题的根源。它是源代码混淆工具(Intellilock 1.1.0.4)中的设置(加密IL代码)之一,使得二进制文件无法在x64环境中运行。
Disabling this setting fixed the issue.
禁用此设置可解决此问题。
#4
0
"selecting x64 from Build Configuration Manager from my VS2008 Pro doesn't seem to work"
I'm not sure why you would be getting binaries at all but remember that the x64 tools are not installed by default. Go back and re-run your VC2008 installer, do a custom install, and, under the VC++ bit of the tree, make sure the checkbox for the 64-bit compiler is checked. If it is not, check it and run the install. Then try your build.
“从我的VS2008 Pro中选择构建配置管理器中的x64似乎不起作用”我不知道为什么你会得到二进制文件,但要记住默认情况下没有安装x64工具。返回并重新运行VC2008安装程序,执行自定义安装,并在树的VC ++位下,确保选中64位编译器的复选框。如果不是,请检查并运行安装。然后尝试你的构建。
You do need the 64-bit versions of the 3rd party dlls and you do need to get all your include and lib paths right and your output folders straight, but having the tool installed is the first step.
您确实需要第三方dll的64位版本,并且您需要将所有包含和库路径正确并且输出文件夹直接,但安装工具是第一步。
#5
0
My application does not has an installer. I created it in as a "portable app" with .NET2.0 as a pre-requisite.
我的应用程序没有安装程序。我将其作为“便携式应用程序”创建,并以.NET2.0作为先决条件。
I have posted the same request to the vendor. Still awaiting for them to revert if they have the x64 bit.
我已向供应商发布了相同的请求。如果他们有x64位,仍在等待他们恢复。
In the meantime I am in the process to purchase a copy of x64 Vista to personally test it out. I can't be sacrificing my users to test this out for me. I will keep this thread posted once I have new updates.
与此同时,我正在购买x64 Vista的副本以亲自测试它。我不能牺牲我的用户来测试这个。一旦有了新的更新,我会保留这个帖子。
Thanks.