解決windows上靜態連結cairo不顯示東西的問題
今天閒著沒事把cairo靜態編譯了一把,但是沒想到靜態連結後用不起來,本來用cairo畫圖好好的現在卻變成了白板一張..除錯了一下看是進入了cairo_win32_surface_create這個函式之後就沒有返回,不過仔細想了下呼叫dll沒問題但是靜態連結就有問題,八成是在載入dll的時候初始化了什麼東西,但是static連結沒有初始化,那手動初始化一下應該就可以了。於是開啟notepad++在cairo原始碼中搜DllEntry,發現果然有初始化一個mutex
BOOL WINAPI
DllMain (HINSTANCE hinstDLL,
DWORD fdwReason,
LPVOID lpvReserved)
{
switch (fdwReason) {
case DLL_PROCESS_ATTACH:
CAIRO_MUTEX_INITIALIZE ();
break;
case DLL_PROCESS_DETACH:
CAIRO_MUTEX_FINALIZE ();
break;
}
return TRUE;
}
那事情就好說了,在程式開始的地方呼叫CAIRO_MUTEX_INITIALIZE (),結束的地方呼叫CAIRO_MUTEX_FINALIZE (),重新編譯,一切正常。
另外還發現了一個方法,在cairo_win32_surface_create之前呼叫一遍cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 0, 0)也能解決問題,原因不知道...不過這不是正常的解決方法,而且還要費勁去釋放這個surface,沒什麼好處。
相關文章
- Windows 10 安裝SVN 不顯示狀態圖示--解決方法Windows
- Java解決Itext pdf中文不顯示問題Java
- 靜態連結動態連結的連結順序問題和makefile示例
- JIVE在WINDOWS下的中文顯示問題的解決Windows
- 解決windows8無法全屏顯示的問題Windows
- 解決Xmanager連線HPUX顯示亂碼的問題UX
- 解決WordPress文章上傳圖片使用中文名不顯示的問題
- Django不顯示CSS的效果(基於Django模板的靜態資源配置問題)DjangoCSS
- 解決arcgis for android中feature不顯示的問題Android
- vue-解決background-image:url不顯示問題Vue
- 無線網路卡狀態不對問題:已連線 顯示 未連線
- 解決Windows下SVN上UUID不匹配問題WindowsUI
- 三種方法教你解決輸入法不顯示問題
- 解決RAW在SQLPLUS上無法顯示的問題SQL
- 解決 PBootCMS 後臺登入不顯示驗證碼的問題boot
- 載入自定義擴充套件包報錯連結不上的問題解決套件
- 解決IBM DATA STUDIO無法連線資料庫問題,JDBC驅動不顯示問題。IBM資料庫JDBC
- 如何使用AIRCHECK G2解決wifi連不上的問題AIWiFi
- Windows無法顯示隱藏資料夾之問題解決Windows
- DotNetZip解決檔名稱中文字元不顯示的問題字元
- windows10照片大圖示不顯示怎麼辦_win10系統不顯示圖示的解決方法WindowsWin10
- layui 輪播圖動態資料不顯示問題UI
- Mac 連結不上AppStore的解決方法MacAPP
- 關於顯示載入動態連結庫模組及解除安裝的問題
- 解決CentOS 中顯示亂碼問題CentOS
- 解決json顯示日期帶T的問題。JSON
- JSP顯示中文問題的解決方案(轉)JS
- HPUX下,解決xmanager的顯示亂碼問題UX
- LiveCharts中文顯示亂碼問題的解決Echarts
- Win10 內建 OpenSSH 使用金鑰連不上的問題解決Win10
- 筆試不會的東西筆試
- linux配置靜態路由解決網路問題Linux路由
- pyecharts地圖功能,並解決顯示不全或只顯示南海諸島問題解決Echarts地圖
- Linux下的靜態連結與動態連結Linux
- Windows10系統下工作列圖示名稱不顯示的解決方法Windows
- WPF ComboBox資料繫結:初始化動態載入ItemsSource後首次賦值Text不顯示問題解決賦值
- 解決Raize日曆控制元件顯示的問題AI控制元件
- ORACLE中科學計數法顯示問題的解決Oracle