OPNET 模块计算机类型“X86”与目标计算机类型“X64”冲突 fatal error LNK1112
来源:互联网 发布:北京超图软件 编辑:程序博客网 时间:2024/06/05 00:24
OPNET 模块计算机类型“X86”与目标计算机类型“X64”冲突 fatal error LNK1112
通常来说,是可以使用兼容模式,用32位的modeler.exe就不会出什么问题。但是要想使用64位的modeler.exe,并且又出现了如题的问题,可以参考一下这篇文章。
下面仅记录一下自己的修改过程。并不保证遇到相同问题的人能通过同样的方法解决该问题。不过可以试一试,大不了再改回来嘛!
参考文章: 1、http://www.docin.com/p-44204938.html
2、http://www.p-englmann.de/中fatal errorLNK 1112的部分
3、http://blog.163.com/zhoumhan_0351/blog/static/39954227200982611422889/ 这个是opnet与vc联合调试
没耐心的请直接跳到正文部分。
前言:
由于想将OpT_Int64类型的变量逻辑左移24位,结果发现使用printf("%I64x/n",a);打印的结果仅剩最低的8位存在,前面的24位惊人被移没了,明明是64bit的变量,怎么会!?
后来发现是使用的32bit的地址空间,最初以为是自己使用的是OPNET\14.5.A\sys\ pc_intel_win32\bin文件夹下的modeler.exe,但是在运行OPNET\14.5.A\sys\pc_amd_win64\bin\中的modeler.exe之后发现,仍然显示的是32bit的地址空间。
在咨询度娘的时候,发现这个问题可能跟vs的编译器有关,在cmd中运行cl,发现果断是32位的编译器。因此,更改了环境变量。
lib: xxx\Microsoft Visual Studio10.0\VC\lib\amd64; C:\Program Files (x86)\Microsoft SDKs\ Windows\v7.0A\Lib\x64;xxx\OPNET\14.5.A\sys\pc_amd_win64\lib;
path: xxx \Microsoft Visual Studio10.0\VC\bin\amd64; G:\ProgramFiles\OPNET\14.5.A\sys\pc_amd_win64 \bin;
反正找到自己的安装文件下的这些文件夹加到环境变量就好了,然后再cmd中输入set,更新环境变量。
在cmd中输入cl,发现变成64位编译器了。如图。
(Ps:在过程中,还将xxx\MicrosoftVisual Studio 10.0\VC\VCWizards文件夹下的default.vcxproj、DefaultTest.vcxproj和vcupgradedefault.vcxproj这三个文件夹中的win32全部替换成了x64。不过应该是vs中的项目的默认平台之类的,和本文要改的没什么关系。反正记录一下。)
后来不知道自己是又改了什么,出现了“fatalerror LNK 1112:模块计算机类型‘X86’与目标计算机类型‘X64’冲突”的问题。
正文:
好吧,终于到正文了。我自己提示的问题应该是bind_so_msvc程序报错。在网上查的资料和根据自己的理解,应该是在链接的时候出的错。具体问题如图:
而且此时在运行opnet的时候,仍然是32位的地址空间。因此,我认为可能是opnet默认的链接程序仍然是用来链接32位的。
下面的修改过程,参考文章1。
Edit->preferences
1、搜索kernel,修改DiscreteEvent Simulation.Code Generation.Compilation中的Compile for 64-Bit,Development, Sequential Kernel项为TRUE;这个的意思应该是编译进程过程中使用64位地址空间。
2、搜索comp_prog,修改DiscreteEvent Simulation.Code Generation.Compilation下的C Compilation Script项为xxx\OPNET\14.5.A\sys\pc_amd_win64\bin\comp_msvc.exe(请找到自己安装文件夹下的)。如果是c++,请更改c++ compilation script。
3、搜索bind_static_prog(静态链接器),修改StaticSimulation Linking Script项为xxx\OPNET\14.5.A\sys\pc_amd_win64\bin\bind_msvc.exe。
4、搜索bind_shobj_prog(动态链接器),修改NetworkRepositories Linking Script项为xxx\OPNET\14.5.A\sys\pc_amd_win64\bin\bind_so_msvc.exe。
5、搜索bind_static_flags(静态链接器标志),修改64-BitStatic Simulation Flags项为/LIBPATH:xxx\OPNET\14.5.A\sys\pc_amd_win64\lib /DEBUG。(/ DEBUG前面有个空格)
6、搜索bind_shobj_flags(动态链接器标志),修改64-BitNetwork Repositories Flags项为/LIBPATH:xxx\OPNET\14.5.A\sys\pc_amd_win64\lib /DEBUG。
总结:修改了以下几项:
Compile for64-Bit, Development, Sequential Kernel
comp_prog
bind_static_prog/bind_shobj_prog
bind_static_flags/bind_shobj_flags
最终在configure/run的时候,simulation设置为development;
Kernel Type中的选择如下图所示的项;
最好去掉如下图所示项的/wp64(我已经去掉了),不然老提示warning(强迫症患者没办法!)
最开始的时候最好强制编译一下,因为OPNET貌似之前编译过了就不再编译了。(省着出错嘛!最好把之前temp的文件呀都删一删)
转自http://blog.csdn.net/iamanda/article/details/53484898
- OPNET 模块计算机类型“X86”与目标计算机类型“X64”冲突 fatal error LNK1112
- OPNET 模块计算机类型“X86”与目标计算机类型“X64”冲突 fatal error LNK1112
- fatal error LNK1112: 模块计算机类型“X86”与目标计算机类型“x64”冲突
- 关于fatal error LNK1112: 模块计算机类型“x64”与目标计算机类型“X86”冲突的解决办法
- moc_qtfirst.obj : fatal error LNK1112: 模块计算机类型“X86”与目标计算机类型“x64”冲突
- fatal error LNK1112: 模块计算机类型“X86”与目标计算机类型“x64”冲突
- fatal error LNK1112: 模块计算机类型“X64”与目标计算机类型“x86”冲突_(解决方案)
- fatal error LNK1112: 模块计算机类型“X86”与目标计算机类型“x64”冲突-解决
- fatal error LNK1112: 模块计算机类型“X86”与目标计算机类型“x64”冲突
- fatal error LNK1112: 模块计算机类型‘X64’与目标计算机类型‘X86’冲突
- fatal error LNK1112: 模块计算机类型“X86”与目标计算机类型“x64”冲突
- fatal error LNK1112: 模块计算机类型“X86”与目标计算机类型“x64”冲突-解决
- fatal error LNK1112: 模块计算机类型“X64”与目标计算机类型“x86”冲突_(解决方案)
- fatal error LNK1112: 模块计算机类型“X64”与目标计算机类型“x86”冲突_(解决方案)
- VS2010链接cplex:“fatal error LNK1112: 模块计算机类型“X64”与目标计算机类型“x86”冲突”;
- fatal error LNK1112: 模块计算机类型“X86”与目标计算机类型“x64”冲突
- fatal error LNK1112: 模块计算机类型“X86”与目标计算机类型“x64”冲突——我的解决方案
- fatal error LNK1112: 模块计算机类型“X86”与目标计算机类型“x64”冲突——我的解决方案
- 读写锁
- TrickGCD HDU
- PTA L3-008 喊山 团体程序设计天梯赛 (bfs)
- 抓取数据 格式化
- MVC模式与三层架构的区别
- OPNET 模块计算机类型“X86”与目标计算机类型“X64”冲突 fatal error LNK1112
- 怎么想静态内部类可以有静态成员和方法而成员内部类不行?
- MySQL:控制台远程登录命令
- python面向对象高级编程
- [J
- 缓冲输出流写出数据的缓冲区问题
- 从HDFS上读取带lzo压缩的SequenceFile文件
- 杭电oj1096 加法 注意输出格式
- 1000