亚洲AV日韩AV无码污污网站_亚洲欧美国产精品久久久久久久_欧美日韩一区二区视频不卡_丰满无码人妻束缚无码区_久爱WWW成人网免费视频

切換到寬版
  • 廣告投放
  • 稿件投遞
  • 繁體中文
  • 如何編譯用戶自定義DLL

    作者:Zemax China 來源:投稿 時間:2020-05-20 17:08 閱讀:12942 [投稿]
    本文將介紹什么是用戶自定義DLL以及如何在Visual Studio中編譯用戶自定義DLL。本教程是基于Visual Studio Community 2017 version 15.9而創(chuàng)建的,但這些步驟在更早的版本中也適用,版本間變化指出均有記載。本文也會討論其他的編譯器。

    為修正這個問題,直接把 {Zemax}DLLSurfaces下面的“usersurf.h”復(fù)制并粘貼到source code同一個路徑下,然后右鍵點擊“Header Files”來載入頭文件并導(dǎo)入現(xiàn)有的代碼中。


    當(dāng)頭文件載入到正確的路徑后,紅色下劃線應(yīng)該就不再出現(xiàn)了。如果有任何內(nèi)容未被讀出,那么該DLL可能不能編譯。即使編譯了,也未必能正常運行。

    使用C++編譯器

    絕大部分Zemax自帶的案例文件都是用C語言寫的。由于Visual Studio是個C++編譯器,這意味著必須對代碼進行一些修改來正確地編譯它們。

    如果還沒添加。那么在代碼開頭的初始化功能區(qū)放入“extern “C” {}”。同時確保把“BOOL WINAPI DllMain”這一行注釋掉。


    在C++編譯器里,程序(function)名往往會在后臺被修改,以使得每個程序都有其唯一的標(biāo)識。如果程序名變化了,那么OpticStudio會無法運行該DLL,因為OpticStudio會尋找具體的名稱(例如:UserDefinedSurface、UserObjectDefinition等)采用上述改變可以強制編譯器保持原來C代碼里的程序名且忽略任何可能造成的錯誤。

    同樣地,可能也會需要無視由于C和C++的細(xì)微不同造成的警告,例如:

    C4996: ‘srtcpy’: This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.

    如果這是編譯中唯一遇到的警告,那么以下的代碼可以繞過這個問題:

    #pragma warning ( disable : 4996 )


    這行代碼會允許編譯器提供特定于電腦或者操作系統(tǒng)的功能,同時保持C和C++語言上大體的兼容性。

    Rebuild Solution

    選擇Build…Rebuild Solution來編譯你的代碼,或者直接按鍵盤“Ctrl+F5”。編譯成功后會輸出以下內(nèi)容:


    分享到:
    掃一掃,關(guān)注光行天下的微信訂閱號!
    【溫馨提示】本頻道長期接受投稿,內(nèi)容可以是:
    1.行業(yè)新聞、市場分析。 2.新品新技術(shù)(最新研發(fā)出來的產(chǎn)品技術(shù)介紹,包括產(chǎn)品性能參數(shù)、作用、應(yīng)用領(lǐng)域及圖片); 3.解決方案/專業(yè)論文(針對問題及需求,提出一個解決問題的執(zhí)行方案); 4.技術(shù)文章、白皮書,光學(xué)軟件運用技術(shù)(光電行業(yè)內(nèi)技術(shù)文檔);
    如果想要將你的內(nèi)容出現(xiàn)在這里,歡迎聯(lián)系我們,投稿郵箱:service@opticsky.cn
    文章點評

    小小白。學(xué)習(xí)了(2020-09-01)

    顧鵬翔:學(xué)習(xí)了(2020-06-12)

    rige:學(xué)習(xí)了。。。。。(2020-05-30)

    jialunzhang:我在生成時遇見“無法啟動.dll”文件的情況,請問這是為什么呢(2020-05-30)

    xiebin525:學(xué)習(xí)了,謝謝(2020-05-25)