Ⅰ 如何在Visual Studio中利用命令行集成Dotfuscator混淆處理
首先在Visual Studio中打開Dotfuscator:點擊菜單欄中的 工具 > PreEmptive Protection - Dotfuscator 打開Dotfuscator。
此處默認新建了Dotfuscator項目,建議先進行保存,將文件保存至你要混淆項目的解決方案文件夾中,如,個人保存的位置為: E:/Projects/OpenSourceProject/ReferenceDoc/Dotfuscator/Samples/DotfuscatorSample/DotfuscatorSample.xml
保存到解決方案文件夾並非必須,此處如此處理可以為了後面進一步處理更加方便。
添加待混淆文件,如圖所示:
修改文件路徑,將文件路徑修改為如下圖所示:點擊 屬性 ,查看 項目屬性 - configdir (就是之前的保存位置),然後切換回 輸入 ,點擊輸入中第三個按鈕 編輯輸入 (那支筆),將路徑中與 configdir 匹配的部分替換為 ${configdir} (注意是大括弧)。
處理此步驟亦不是必須的,這樣處理的原因是為了讓我們的配置與本地無關(相對路徑),方便其他人合作使用。
至此,基本配置就可以了,點擊生成項目就可以進行混淆了。至於其他更多配置見官方文檔。
本地可以直接在Dotfuscator工具中點擊菜單欄中的 幫助 > 幫助目錄 (此為中文文檔,基礎的配置基本都有)。
幫助文件本地目錄參考(中文幫助): C:/Program Files (x86)/Microsoft Visual Studio 14.0/PreEmptive Solutions/Dotfuscator and Analytics Community Edition/zh-Hans
配置Visual Studio命令調用Dotfuscator 主要操作就是編輯生成後事件:右擊項目 屬性 ,切換到 生成事件 頁面,編輯 後期生成事件命令行 ,添加如下代碼:
此處為了保證只有在Release的模式下使用混淆,故添加了Release判斷。
if $(ConfigurationName)==Release "C:/Program Files (x86)/Microsoft Visual Studio 14.0/PreEmptive Solutions/Dotfuscator and Analytics Community Edition/dotfuscatorcli.exe" /q "$(SolutionDir)DotfuscatorSample.xml"
代碼解釋:dotfuscator命令行工具+參數+項目混淆配置文件;其中配置文件之前保存到解決方案文件夾下,故此出可以直接用解決方案文件目錄來索引。
代碼中唯一不足就是命令行工具使用了絕對路徑,vs中的宏參數沒有可以直接使用的,若讀者有啥好方法將此變為相對路徑,望通知。 —— 但關於系統中添加環境變數的法子就不要了,個人不喜。
如果你在此處下一步需要進一步的打包處理,而你又需要Debug模式下一樣可以打包測試。如,本人使用WiX打包,需要配置文件路徑,方便一點就是要配置為生成路徑,但是release模式下,需要將混淆的打包進去,而非直接生成的文件。此時,你不能改打包配置(改路徑的話,debug會用不了),所以,你需要在將混淆過的文件拷貝到原來的release生成目錄。所以我最後完整的生成事件就是如下代碼了:
注意:經測試,如果在Dotfuscator中將生成路徑設為文件來源路徑,可以生成還會自動覆蓋,但軟體會用不了,具體原因不明。
if $(ConfigurationName)==Release "C:/Program Files (x86)/Microsoft Visual Studio 14.0/PreEmptive Solutions/Dotfuscator and Analytics Community Edition/dotfuscatorcli.exe" /q "$(SolutionDir)DotfuscatorSample.xml" if $(ConfigurationName)==Release x /e /y "$(SolutionDir)Dotfuscated/*.*" "$(TargetDir)"
代碼中的目錄可以見Dotfuscator配置的生成目錄:
Ⅱ 如何在windows系統的cmd命令行下調用VS編譯器
1、桌面空白右鍵,選擇新建---快捷方式; 2、輸入cmd,點擊下一步; 3、可修改名稱,點擊完成; 4、右鍵新建的cmd快捷方式,選擇屬性; 5、點擊布局選項卡,屏幕緩存區大小和窗口大小都按照你顯示器解析度設置,點擊確定;
Ⅲ vs 命令行編譯靜態庫
_declspec(dllexport) void test_print(char* sz_input);
這是動態鏈接庫 -- dllexport ,dll是動態鏈接庫。
不是你說的靜態庫。
動態鏈接庫,應用程序調用它,編譯鏈接時要有.lib, 運行時要有.dll
Debug\ -- 給別的程序用,要用 Release\,不能用 Debug\
char * __ptr64 sz_input;
__ptr64 -- 32位機上,指針sz_input截斷為32位.
char * __ptr32 sz_input;
__ptr32 -- 64位機上,指針sz_input變32位
wchar_t,_MBCS -- 表明你要用雙位元組字元,那麼程序就不應當用 單位元組char 型。如果你要編的不是要用雙位元組字元,那麼 就不要 wchar_t,_MBCS。
Ⅳ 如何用vs和makefile文件進行編譯
運行cmd.exe (or command.com in win9x)->進到vc/bin目錄->運行vc-vars32.bat->進到makefile 所在的目錄->nmake /f makefile
從sourceforge上下載下來的libjpeg源代碼中有一個makefile.vc的文件,可以通過nmake /f makefile.vc [nodebug=1]來編譯libjpeg,但是只能編譯靜態庫,如果需要編譯dll以便在emacs等程序中使用的話,需要修改makefile.vc和jmorecfg.h文件。在makefile.vc文件中添加編譯dll規則:
以下內容為程序代碼:
libjpeg.lib: $(LIBOBJECTS) $(RM) libjpeg.lib lib -out:libjpeg.lib $(LIBOBJECTS) #
添加以下這行 libjpeg.dll: $(LIBOBJECTS) $(RM) libjpeg.dll link -dll -out:libjpeg.dll $(LIBOBJECTS) 在jmorecfg.h中添加#define _WIN32_#define JPEG_DLL 然後nmake /f makefile.vc nodebug=1就可以編譯了。
將makefile復制為一個.mak文件,然後用VC打開即可!
.mak 就是一個makefile
可以指定怎樣編譯(命令行,必須先設置VC命令行環境)
vcvars32.bat可設置環境,在vc98/bin下 nmake /f XXXX.mak
如果有一個makefile就只要nmake就可以了。
Ⅳ VS2017在Windows10下如何運用命令行編譯運行
如果是 dotnet framework 項目,使用 msbuild.exe 進行編譯
如果是 dotnet Core 項目,用 dotnet 命令進行編譯
Ⅵ vs2013怎麼在命令行使用cl編譯
1. 「cl不是可用的內部命令或可執行程序」
----原因:環境變數Path沒有設置好。
----解決:在環境變數Path中添加VC的bin目錄。Path= D:\Microsoft Visual Studio 9.0\VC\bin。在D:\Microsoft Visual Studio 9.0\VC\ce\bin下還有其他一些編譯器,看名字是交叉編譯用的
2.「mspdb80.dll無法找到」
----原因:vs2008的VC\bin目錄下缺少msobj80.dll、mspdb80.dll、mspdbcore.dll、mspdbsrv.exe這四個文件。
----解決:在D:\Microsoft Visual Studio 9.0\Common7\IDE下復制這四個文件到VC\bin。
3.解決以上問題以後,可以直接在命令行的任何目錄下編譯C/C++文件了。可是又出現新狀況:
「fatal error: cannot open include file」
----原因:vs2008未設置include和lib的環境變數。
----解決:
3.1在環境變數里添加變數INCLUDE,包含進VC\Include和C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include(這個是安裝vs時自動安裝在C盤的)兩個目錄
INCLUDE=D:\Microsoft Visual Studio 9.0\VC\include; C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include
3.2添加變數LIB,包含進VC\lib和C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib(這個也是安裝vs時自動安裝在C盤的)兩個目錄:
LIB=D:\Microsoft Visual Studio 9.0\VC\lib; C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib
4.提示:fatal error LNK1104: 無法打開文件「kernel32.lib」,(在IDE裡面運行沒有問題,因為IDE中採用了另外的封裝了庫)
----原因:vs2008未設置include和lib的環境變數。
----解決:在環境變數里添加變數LIB,C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib
或者將kernel32.lib直接到vc的lib目錄下也可以
至此,問題終於解決了,hoho~o(∩_∩)o...
【Tips】
1.使用-GX選項時,2005的編譯器會提示GX已過時,使用-EHsc代替
cl : Command line warning D9035 : option 'GX' has been deprecated and will be re
moved in a future release
cl : Command line warning D9036 : use 'EHsc' instead of 'GX'
2.環境變數可以通過「我的電腦右鍵->高級->環境變數」設置。當然也有其它方法,欲知詳情請網路之。
【Ref】
http://blog.163.com/danshiming@126/blog/static/109412748201312703225352/(在命令行界面使用vs2005的cl )
http://hi..com/fymzone/blog/item/fdac1bfb9ba55f65034f5689.html(用vs2005編譯器cl在控制台下編譯)
http://hi..com/vanta/blog/item/f62035a80ec521b5cb130c3b.html(在cmd中鍵入cl執行編譯時會出現mspdb80.dll無法找到的情況)