1. 程式人生 > >VC為自己的工程指定入口點

VC為自己的工程指定入口點

解決外部符號錯誤:_main,[email protected],__beginthreadex
在建立MFC專案時, 不使用MFC AppWizard嚮導, 如果沒有設定好專案引數, 就會在編譯時產生很多連線錯誤, 如error LNK2001錯誤, 典型的錯誤提示有:
libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol [email protected]
msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol
[email protected]

nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex

1. Windows子系統設定錯誤, 提示:
libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main 


Windows專案要使用Windows子系統, 而不是Console, 可以這樣設定:

[Project] --> [Settings] --> 選擇"Link"屬性頁,
在Project Options中將/subsystem:console改成/subsystem:windows


2. Console子系統設定錯誤, 提示:
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol [email protected] 


控制檯專案要使用Console子系統, 而不是Windows, 設定:

[Project] --> [Settings] --> 選擇"Link"屬性頁,
在Project Options中將/subsystem:windows改成/subsystem:console


3. 程式入口設定錯誤, 提示:
msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol 
[email protected]


通常, MFC專案的程式入口函式是WinMain, 如果編譯專案的Unicode版本, 程式入口必須改為wWinMainCRTStartup, 所以需要重新設定程式入口:

[Project] --> [Settings] --> 選擇"Link"屬性頁,
在Category中選擇Output,
再在Entry-point symbol中填入wWinMainCRTStartup, 即可

這個問題,我是使用Fox toolkit來開發介面程式時,程式執行時,在其後面總是出現Console視窗。指定入口後,可以不出現Console視窗,設定如下:
comctl32.lib wsock32.lib kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib mpr.lib   FOX-1.6.lib /entry:"mainCRTStartup" /subsystem:windows /profile /machine:I386 /out:"Debug/a.exe"


4. 執行緒執行時庫設定錯誤, 提示:
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex   
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex


這是因為MFC要使用多執行緒時庫, 需要更改設定:

[Project] --> [Settings] --> 選擇"C/C++"屬性頁,
在Category中選擇Code Generation,
再在Use run-time library中選擇Debug Multithreaded或者multithreaded

其中,
Single-Threaded 單執行緒靜態連結庫(release版本)
Multithreaded 多執行緒靜態連結庫(release版本)
multithreaded DLL 多執行緒動態連結庫(release版本)
Debug Single-Threaded 單執行緒靜態連結庫(debug版本)
Debug Multithreaded 多執行緒靜態連結庫(debug版本)
Debug Multithreaded DLL 多執行緒動態連結庫(debug版本)


單執行緒: 不需要多執行緒呼叫時, 多用在DOS環境下
多執行緒: 可以併發執行
靜態庫: 直接將庫與程式Link, 可以脫離MFC庫執行
動態庫: 需要相應的DLL動態庫, 程式才能執行
release版本: 正式釋出時使用
debug版本: 除錯階段使用

相關推薦

VC自己工程指定入口

解決外部符號錯誤:_main,[email protected],__beginthreadex在建立MFC專案時, 不使用MFC AppWizard嚮導, 如果沒有設定好專案引數, 就會在編譯時產生很多連線錯誤, 如error LNK2001錯誤, 典型的錯誤提示有:libcmtd.lib(cr

myeclipse修改WebRoot自己工程名字

1.重新命名原來的WebRoot資料夾為MessageBoard。 2..選擇工程->右鍵->build path->configure Build path->myeclips->web-> 3.開啟專案資料夾修改.mymetada

每個VC設定自己的狀態列隱藏與顯示

在plist檔案:View controller-based status bar appearance No(此時整個app的狀態列為白色)在要隱藏的頁面://頁面出現時隱藏-(void)viewWillAppear:(BOOL)animated{    [[UIAppl

GPS以中心圓心,指定距離半徑獲取隨機座標點

    最近遇到需要獲取隨機座標的需求,就研究了一下,現在整理成C#和JAVA程式碼,方便有需要的人蔘考。主要功能是實現以指定的座標點為圓心,指定的距離為半徑,在圓內獲取一個隨機座標點。 主要功能:     1、獲取隨機座標點;     2、計算兩點間距離。 C#程式碼

入口0的程式

前幾天群裡有人給了個病毒樣本 拿來一看很奇怪,是個exe檔案,但入口點顯示卻是0 用OD載入後會提示出錯: 之後問了一下同事,大概瞭解了一下原理: Windows系統載入PE檔案後,會通過PE檔案的特定結構讀取各種資訊。 而該PE檔案的各種資訊都是完整

自己編寫的windows應用程序制作安裝包

sting 代碼 msd 如何 gid rmi extension 目錄 參考資料 1 寫好了一個windows程序之後如何制作安裝包 這個在vs中就可以直接發布了,可以制作msi的安裝包和exe的安裝包。 2 window應用程序安裝包做了哪些事情 rpm安裝包的話,只是

Makefile中怎樣調用python和perl文件自己提供須要的數據

print erl col shel ria 實例代碼 space shell eight Makefile中怎樣調用python和perl文件為自己提供須要的數據,利用print函數對外輸出數據 實例代碼例如以下 perl.pl #!/usr/bin/per

Java基礎部分回顧(自己

.cn logs -1 繼續 分享 9.png 沒有 理解 開始 最近,學到集合框架。感覺有些蒙圈兒。知道這一塊很重要很重要,不敢疏忽。自學遇到的攔路虎,想著是不是前面的基礎知道還沒有夯實,對一些概念沒有真正的理解到位呢?!所以,停下來。開始找一些視頻,做一下回顧。 再次鞏

怎樣更改Linux中默認的openjdk自己安裝的JDK

config track ots java 演示 pat ng- env 路徑 (1)/etc/profileexport JAVA_HOME=/usr/java/jdk1.7.0_67-cloudera/export PATH=$PATH:$JAVA_HOME/bin

編程練習,自己做的21遊戲

con continue *** 洗牌 其它 success popu 做的 i++ #include <stdio.h> #include <time.h> #include <stdlib.h> int N; //牌序 in

使用mavenweb工程引入jstl包時報錯了

項目 dmi 學習網 tom enc user depend web ren 今天在學習網上一個使用maven搭建web項目時遇到一個問題:在pom文件添加jstl包時發現錯誤 <!-- https://mvnrepository.com/artifact/java

做技術的幾年,最後自己找了一個信仰

tsx 幫助 閱讀 佛教 一位 信仰 力量 采訪 突如其來 利用業余時間開發了一個佛教網站。摘錄了一些美文。空余時間可以閱讀閱讀吧。 菩提樹下 點擊進入http://www.ftsx.net/ 下面是我摘錄的 同情不是用來秀,用來販賣的 不幸和苦難,也是一個人的隱私,擅自

C#.NET常見問題(FAQ)-程序不包含適合於入口的靜態“Main”方法怎麽辦

you site href csr span 下載 在線 出現 img 如下圖所示,一般程序上次運行還好好的,而且不管你復制粘貼再簡單的程序也出現這種錯誤提示. ?先點擊右側的顯示所有文件,下面列舉了所有CS文件,右擊點擊包括在項目中,則該文件呈現綠色,再運行

js或css指定元素擊時內容不可被選中

指定元素 art class family adding input tro hover ria 一、css3中可以使用"user-select"屬性: body{ -webkit-user-select:none;/*谷歌

將Unity導出的Eclipse工程轉換AndroidStudio工程

地址 href 其中 gravity sina 選擇 mar armeabi font 步驟:1)將unity項目導出到文件夾: 轉換到安卓平臺,這裏只勾選google android project。然後導出到自己新建的文件夾。 2)打開導出的文件夾,看到如下內容.這是

js中怎麽同級元素添加擊事件

合成 分享圖片 type post 類型 節點 添加 屬性。 next 事件件是javascript腳本語言的重要組成部分,因為有事件才使用戶頁面的體驗更加的美好。元素添加事件是js語言中最基礎的。我們可以為元素本身添加事件,也可以通過事件綁定和事件監聽為元素的父元素和子元

自己是程序員而驕傲

ase css 每年 java 案例 才有 出現 都沒有 功能 學習經歷 高中經歷: 我高中讀於某職業技術學院,那個時候學校老師教的都是計算機文化基礎也就是office,當然還有html網頁以及思科交換機配置。我最喜歡的是html網頁,因為這個隨便寫幾句代碼就能看見效果,當

Zookeeper源碼編譯Eclipse工程(win7下Ant編譯)

官網 有關 快的 運行 點擊 ips 源碼編譯 雅虎 工程文件 前言 ZooKeeper是雅虎的。用Ant進行軟件構建。 千裏之行,始於足下。想看源碼的第一步,是下載源碼並導入某個IDE工具。 Ant http://ant.apache.org/ Windows

maven工程指定jdk版本

bsp mpi 指定 plugin artifact 增加 utf xml文件 nbsp 方法1:在conf文件夾下找到settings.xml在profiles 節點下增加: <profile> <id>jdk-1.7<

脫殼:OEP(即程序入口)查找 --- 基本思路和常見方法

dash xxxx 適合 往回 去掉 nbsp 忽略 回車 p地址 OEP:程序的入口點,軟件加殼就是隱藏了OEP(或者用了假的OEP), 只要我們找到程序真正的OEP,就可以立刻脫殼。 PUSHAD (壓棧) 代表程序的入口點, POPAD (出棧) 代表程序的