簡體   English   中英

如何在VC ++中管理更大的項目?

[英]How to manage a bigger project in VC++?

我寫小片段或單個項目已經很長時間了,但是這次我遇到了一個“解決方案”,需要附加多個項目。

那么,為什么需要這樣做呢? 因為我的項目以下列方式站立:

  • 核心在靜態庫中
  • 有一個可執行文件需要核心功能
  • 有一個DLL需要核心功能
  • 其他一些小型項目

好吧,這並不難,這是合乎邏輯的。 我不想每次都編譯內核,因此將其放在一個lib中。 當我開始編譯時,唯一的問題開始出現。

一個簡單的#pragma comment(lib,"mylibrary.lib")還不夠,解決方案找不到該文件。 我必須執行以下技巧來編譯我的解決方案: #pragma comment(lib,"..\\\\Release\\\\mylib.lib")

當然,這不是最好的解決方案,因為如果我以調試模式進行編譯怎么辦? 也許我可以寫一個定義,但是感覺並不專業。 編譯后甚至出現問題。 我收到大量警告:

2>Lib32Anticheat.lib(disasm.obj) : warning LNK4204: 'C:\Users\Unknown User\Desktop\Lib32Anticheat\Release\Lib32Anticheat.pdb' is missing debugging information for referencing module; linking object as if no debug info
2>Lib32Anticheat.lib(disasm_x86.obj) : warning LNK4204: 'C:\Users\Unknown User\Desktop\Lib32Anticheat\Release\Lib32Anticheat.pdb' is missing debugging information for referencing module; linking object as if no debug info
2>Lib32Anticheat.lib(cpu.obj) : warning LNK4204: 'C:\Users\Unknown User\Desktop\Lib32Anticheat\Release\Lib32Anticheat.pdb' is missing debugging information for referencing module; linking object as if no debug info
2>LIBCMT.lib(dyn_tls_dtor.obj) : warning LNK4099: PDB 'libcmt.pdb' was not found with 'LIBCMT.lib(dyn_tls_dtor.obj)' or at 'C:\Users\Unknown User\Desktop\Lib32Anticheat\Release\libcmt.pdb'; linking object as if no debug info
2>LIBCMT.lib(dyn_tls_init.obj) : warning LNK4099: PDB 'libcmt.pdb' was not found with 'LIBCMT.lib(dyn_tls_init.obj)' or at 'C:\Users\Unknown User\Desktop\Lib32Anticheat\Release\libcmt.pdb'; linking object as if no debug info
2>LIBCMT.lib(matherr_detection.obj) : warning LNK4099: PDB 'libcmt.pdb' was not found with 'LIBCMT.lib(matherr_detection.obj)' or at 'C:\Users\Unknown User\Desktop\Lib32Anticheat\Release\libcmt.pdb'; linking object as if no debug info
2>LIBCMT.lib(guard_support.obj) : warning LNK4099: PDB 'libcmt.pdb' was not found with 'LIBCMT.lib(guard_support.obj)' or at 'C:\Users\Unknown User\Desktop\Lib32Anticheat\Release\libcmt.pdb'; linking object as if no debug info
2>LIBCMT.lib(gs_cookie.obj) : warning LNK4099: PDB 'libcmt.pdb' was not found with 'LIBCMT.lib(gs_cookie.obj)' or at 'C:\Users\Unknown User\Desktop\Lib32Anticheat\Release\libcmt.pdb'; linking object as if no debug info
2>LIBCMT.lib(gs_report.obj) : warning LNK4099: PDB 'libcmt.pdb' was not found with 'LIBCMT.lib(gs_report.obj)' or at 'C:\Users\Unknown User\Desktop\Lib32Anticheat\Release\libcmt.pdb'; linking object as if no debug info
2>LIBCMT.lib(gs_support.obj) : warning LNK4099: PDB 'libcmt.pdb' was not found with 'LIBCMT.lib(gs_support.obj)' or at 'C:\Users\Unknown User\Desktop\Lib32Anticheat\Release\libcmt.pdb'; linking object as if no debug info
2>LIBCMT.lib(pesect.obj) : warning LNK4099: PDB 'libcmt.pdb' was not found with 'LIBCMT.lib(pesect.obj)' or at 'C:\Users\Unknown User\Desktop\Lib32Anticheat\Release\libcmt.pdb'; linking object as if no debug info
2>LIBCMT.lib(cpu_disp.obj) : warning LNK4099: PDB 'libcmt.pdb' was not found with 'LIBCMT.lib(cpu_disp.obj)' or at 'C:\Users\Unknown User\Desktop\Lib32Anticheat\Release\libcmt.pdb'; linking object as if no debug info
2>LIBCMT.lib(ehprolg3.obj) : warning LNK4099: PDB 'libcmt.pdb' was not found with 'LIBCMT.lib(ehprolg3.obj)' or at 'C:\Users\Unknown User\Desktop\Lib32Anticheat\Release\libcmt.pdb'; linking object as if no debug info
2>LIBCMT.lib(secchk.obj) : warning LNK4099: PDB 'libcmt.pdb' was not found with 'LIBCMT.lib(secchk.obj)' or at 'C:\Users\Unknown User\Desktop\Lib32Anticheat\Release\libcmt.pdb'; linking object as if no debug info
2>LIBCMT.lib(loadcfg.obj) : warning LNK4099: PDB 'libcmt.pdb' was not found with 'LIBCMT.lib(loadcfg.obj)' or at 'C:\Users\Unknown User\Desktop\Lib32Anticheat\Release\libcmt.pdb'; linking object as if no debug info
2>LIBCMT.lib(argv_mode.obj) : warning LNK4099: PDB 'libcmt.pdb' was not found with 'LIBCMT.lib(argv_mode.obj)' or at 'C:\Users\Unknown User\Desktop\Lib32Anticheat\Release\libcmt.pdb'; linking object as if no debug info
2>LIBCMT.lib(commit_mode.obj) : warning LNK4099: PDB 'libcmt.pdb' was not found with 'LIBCMT.lib(commit_mode.obj)' or at 'C:\Users\Unknown User\Desktop\Lib32Anticheat\Release\libcmt.pdb'; linking object as if no debug info
2>LIBCMT.lib(denormal_control.obj) : warning LNK4099: PDB 'libcmt.pdb' was not found with 'LIBCMT.lib(denormal_control.obj)' or at 'C:\Users\Unknown User\Desktop\Lib32Anticheat\Release\libcmt.pdb'; linking object as if no debug info
2>LIBCMT.lib(file_mode.obj) : warning LNK4099: PDB 'libcmt.pdb' was not found with 'LIBCMT.lib(file_mode.obj)' or at 'C:\Users\Unknown User\Desktop\Lib32Anticheat\Release\libcmt.pdb'; linking object as if no debug info
2>LIBCMT.lib(fltused.obj) : warning LNK4099: PDB 'libcmt.pdb' was not found with 'LIBCMT.lib(fltused.obj)' or at 'C:\Users\Unknown User\Desktop\Lib32Anticheat\Release\libcmt.pdb'; linking object as if no debug info
2>LIBCMT.lib(invalid_parameter_handler.obj) : warning LNK4099: PDB 'libcmt.pdb' was not found with 'LIBCMT.lib(invalid_parameter_handler.obj)' or at 'C:\Users\Unknown User\Desktop\Lib32Anticheat\Release\libcmt.pdb'; linking object as if no debug info
2>LIBCMT.lib(matherr.obj) : warning LNK4099: PDB 'libcmt.pdb' was not found with 'LIBCMT.lib(matherr.obj)' or at 'C:\Users\Unknown User\Desktop\Lib32Anticheat\Release\libcmt.pdb'; linking object as if no debug info
2>LIBCMT.lib(new_mode.obj) : warning LNK4099: PDB 'libcmt.pdb' was not found with 'LIBCMT.lib(new_mode.obj)' or at 'C:\Users\Unknown User\Desktop\Lib32Anticheat\Release\libcmt.pdb'; linking object as if no debug info
2>LIBCMT.lib(thread_locale.obj) : warning LNK4099: PDB 'libcmt.pdb' was not found with 'LIBCMT.lib(thread_locale.obj)' or at 'C:\Users\Unknown User\Desktop\Lib32Anticheat\Release\libcmt.pdb'; linking object as if no debug info
2>LIBCMT.lib(ehvecdtr.obj) : warning LNK4099: PDB 'libcmt.pdb' was not found with 'LIBCMT.lib(ehvecdtr.obj)' or at 'C:\Users\Unknown User\Desktop\Lib32Anticheat\Release\libcmt.pdb'; linking object as if no debug info
2>LIBCMT.lib(std_type_info_static.obj) : warning LNK4099: PDB 'libcmt.pdb' was not found with 'LIBCMT.lib(std_type_info_static.obj)' or at 'C:\Users\Unknown User\Desktop\Lib32Anticheat\Release\libcmt.pdb'; linking object as if no debug info
2>LIBCMT.lib(tncleanup.obj) : warning LNK4099: PDB 'libcmt.pdb' was not found with 'LIBCMT.lib(tncleanup.obj)' or at 'C:\Users\Unknown User\Desktop\Lib32Anticheat\Release\libcmt.pdb'; linking object as if no debug info
2>LIBCMT.lib(delete_array.obj) : warning LNK4099: PDB 'libcmt.pdb' was not found with 'LIBCMT.lib(delete_array.obj)' or at 'C:\Users\Unknown User\Desktop\Lib32Anticheat\Release\libcmt.pdb'; linking object as if no debug info
2>LIBCMT.lib(delete_scalar.obj) : warning LNK4099: PDB 'libcmt.pdb' was not found with 'LIBCMT.lib(delete_scalar.obj)' or at 'C:\Users\Unknown User\Desktop\Lib32Anticheat\Release\libcmt.pdb'; linking object as if no debug info
2>LIBCMT.lib(new_array.obj) : warning LNK4099: PDB 'libcmt.pdb' was not found with 'LIBCMT.lib(new_array.obj)' or at 'C:\Users\Unknown User\Desktop\Lib32Anticheat\Release\libcmt.pdb'; linking object as if no debug info
2>LIBCMT.lib(new_scalar.obj) : warning LNK4099: PDB 'libcmt.pdb' was not found with 'LIBCMT.lib(new_scalar.obj)' or at 'C:\Users\Unknown User\Desktop\Lib32Anticheat\Release\libcmt.pdb'; linking object as if no debug info
2>LIBCMT.lib(throw_bad_alloc.obj) : warning LNK4099: PDB 'libcmt.pdb' was not found with 'LIBCMT.lib(throw_bad_alloc.obj)' or at 'C:\Users\Unknown User\Desktop\Lib32Anticheat\Release\libcmt.pdb'; linking object as if no debug info
2>LIBCMT.lib(thread_safe_statics.obj) : warning LNK4099: PDB 'libcmt.pdb' was not found with 'LIBCMT.lib(thread_safe_statics.obj)' or at 'C:\Users\Unknown User\Desktop\Lib32Anticheat\Release\libcmt.pdb'; linking object as if no debug info
2>LIBCMT.lib(exe_main.obj) : warning LNK4099: PDB 'libcmt.pdb' was not found with 'LIBCMT.lib(exe_main.obj)' or at 'C:\Users\Unknown User\Desktop\Lib32Anticheat\Release\libcmt.pdb'; linking object as if no debug info
2>LIBCMT.lib(tlssup.obj) : warning LNK4099: PDB 'libcmt.pdb' was not found with 'LIBCMT.lib(tlssup.obj)' or at 'C:\Users\Unknown User\Desktop\Lib32Anticheat\Release\libcmt.pdb'; linking object as if no debug info
2>LIBCMT.lib(initializers.obj) : warning LNK4099: PDB 'libcmt.pdb' was not found with 'LIBCMT.lib(initializers.obj)' or at 'C:\Users\Unknown User\Desktop\Lib32Anticheat\Release\libcmt.pdb'; linking object as if no debug info
2>LIBCMT.lib(utility.obj) : warning LNK4099: PDB 'libcmt.pdb' was not found with 'LIBCMT.lib(utility.obj)' or at 'C:\Users\Unknown User\Desktop\Lib32Anticheat\Release\libcmt.pdb'; linking object as if no debug info
2>LIBCMT.lib(default_precision.obj) : warning LNK4099: PDB 'libcmt.pdb' was not found with 'LIBCMT.lib(default_precision.obj)' or at 'C:\Users\Unknown User\Desktop\Lib32Anticheat\Release\libcmt.pdb'; linking object as if no debug info
2>LIBCMT.lib(utility_desktop.obj) : warning LNK4099: PDB 'libcmt.pdb' was not found with 'LIBCMT.lib(utility_desktop.obj)' or at 'C:\Users\Unknown User\Desktop\Lib32Anticheat\Release\libcmt.pdb'; linking object as if no debug info
2>LIBCMT.lib(utility_static.obj) : warning LNK4099: PDB 'libcmt.pdb' was not found with 'LIBCMT.lib(utility_static.obj)' or at 'C:\Users\Unknown User\Desktop\Lib32Anticheat\Release\libcmt.pdb'; linking object as if no debug info
2>LIBCMT.lib(initsect.obj) : warning LNK4099: PDB 'libcmt.pdb' was not found with 'LIBCMT.lib(initsect.obj)' or at 'C:\Users\Unknown User\Desktop\Lib32Anticheat\Release\libcmt.pdb'; linking object as if no debug info
2>  Win32Anticheat.vcxproj -> C:\Users\Unknown User\Desktop\Lib32Anticheat\Release\Win32Anticheat.exe

因此,在該日志之后,我假定它缺少調試信息,這會使查找錯誤變得更加困難。 在“調試”模式下,我沒有收到此類警告,但我認為我應該進行一些調整或做出其他更改,以確保“發布”模式未發出此類警告。

我個人不會將您產品的核心設為靜態庫。 您的DLL和EXE將各自獲得其自己的副本,這將是兩個不同且獨立的實體。 那些應該是靜態的和單一的東西,將被加倍。 並且您的程序可能無法按預期方式運行。

其次,我認為LNK4099警告不能被抑制。 如果得到它們,可能是因為在構建調試時鏈接了發行版庫,反之亦然。

我個人不會使用#pragma語句進行鏈接。 我過去看過它,而且那些項目總是建得不好。 在項目中指定您的庫鏈接或生成文件:這就是它們的用途。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM