惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 三生石上(FineUI控件)
月光博客
月光博客
S
SegmentFault 最新的问题
有赞技术团队
有赞技术团队
Stack Overflow Blog
Stack Overflow Blog
Engineering at Meta
Engineering at Meta
T
The Blog of Author Tim Ferriss
The GitHub Blog
The GitHub Blog
小众软件
小众软件
Hugging Face - Blog
Hugging Face - Blog
IT之家
IT之家
宝玉的分享
宝玉的分享
A
About on SuperTechFans
Vercel News
Vercel News
P
Proofpoint News Feed
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 【当耐特】
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
V
Visual Studio Blog
Jina AI
Jina AI
Y
Y Combinator Blog
T
Tailwind CSS Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Last Week in AI
Last Week in AI

博客园 - Jason.NET

请不要为了自己的商业目地不择手段 加密狗保护的VFP软件破解 (朋友之作,代发) 使 Framework 2.0 的程序集不用安装 Framework 就可以运行的工具免费发布了 怎样给没有源代码的.net程序添加修改功能 谁不需要赚钱 -- 想,还要敢想 - Jason.NET 发布一个武汉的.net程序员招骋信息 中国软件业的混乱,观总价值2亿项目后的感叹 - Jason.NET - 博客园 刚刚收到来至 Reliasoft Corporation 的一封版权申明信 我想列出一个保护类软件的黑名单 排名和积分都大大降低了?怎么回事? Thinstall 包装 Dotnet 程序分析 一款非混淆软件 for .net 保护 各种Web脚本下,日历的实现方法 为什么浏览器有这么多标准??? 由浅至深,谈谈.NET混淆原理 -- 五(MaxtoCode原理),六(其它保护方法) QQ有漏洞??? 由浅至深 谈谈.NET混淆原理 (四) -- 反混淆(原理 + 工具篇) WEB程序员,界面美化是你心中永远的痛吗? 由浅至深 谈谈.NET混淆原理(三)-- 流程混淆(续)
DOTNET 32位下的程序在64位下真的可以运行吗? - Jason.NET - ...
Jason.NET · 2006-11-02 · via 博客园 - Jason.NET

理论上,32位下编译过的DOTNET在64位下是可以运行的,因为虚拟机会帮你做转换。但,如果你编程的习惯不好,也有可能不能运行。

近来,在做64位开发,MAXTOCODE 要支持 64位平台和 Vista 嘛。发现一个问题,在32位环境下运行很正常的软件,在64位下运行却得不到正确的值。

如例:

  [DllImport("KERNEL32.DLL", EntryPoint="GetModuleHandleA", CharSet=CharSet.Ansi, SetLastError=true, ExactSpelling=true)]
  private static extern int GetModuleHandle(string lpModuleName);

  如果你的调用是 int m_handle = GetMethodHandle("");

  这样的语句绝对会在 64 位获取不到正确的值。

  原因很简单, int 是 32 位的,而在 64位系统下,返回的地址是 00000000 00000000 的格式,系统会自动取基址,而抛弃了段址。

  所以,以后老老实实,开发定义都这样写吧

  [DllImport("KERNEL32.DLL", EntryPoint="GetModuleHandleA", CharSet=CharSet.Ansi, SetLastError=true, ExactSpelling=true)]
  private static extern IntPtr GetModuleHandle(string lpModuleName);

  而且要改掉用 int 的习惯。。。 别把以前 WINDOWS的开发习惯带进来,特别是咱们喜欢用 VB。NET 的朋友, LONG 也是 32 位的