OPNET 模組電腦類型“X86”與目標電腦類型“X64”衝突 fatal error LNK1112__NET

來源:互聯網
上載者:User
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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.