2019年9月

VS2012版本下std::function存在问题,链接:https://stackoverflow.com/questions/13096162/stdfunction-not-compiling-in-vs2012

#include <iostream>
#include <functional>

struct Foo {
    Foo(int num) : num_(num) {}
    void print_add(int i) const { std::cout << num_+i << '\n'; }
    int num_;
};

int main()
{
    // store a call to a member function
    std::function<void(const Foo&, int)> f_add_display = std::mem_fn(&Foo::print_add);
    Foo foo(314159);
    f_add_display(foo, 1);
}

 

 

 

Motherboard name: B365M-PIXIU
BIOS date: 05/24/2019
BIOS version: 1002
ME version: 11.8.65.3590 (1.5M)
GbE version: Not present
Primary LAN MAC: 40B0767D8454
DTS key: Not present
UUID: 536A2E2B2CFE90322E4440B0767D8454
MBSN: 190245622202248

 以下inno setup脚本,实现了:1.水波纹效果 2.安装时检测是否安装其他版本,并在欢迎页面添加文字提示 4.检测安装vcredist_x86.exe  3.卸载时添加提示

; 脚本由 Inno Setup 脚本向导 生成!
; 有关创建 Inno Setup 脚本文件的详细资料请查阅帮助文档!

#define MyAppName "GX_Standardizeddrawing_X64"
#define MyAppVersion "
2.5"
#define MyAppPublisher "ZWSOFT"
#define MyAppURL "www.zwcad.com"
#define MyAppExeName "Gx_standardizeddrawing"
#define shortCutName "广西通信标准化制图"

[Setup]
; 注: AppId的值为单独标识该应用程序。
; 不要为其他安装程序使用相同的AppId值。
; (生成新的GUID,点击 工具|在IDE中生成GUID。)
AppId
={{904DF7AD-D92A-4E81-A8ED-F0EB51701FFC}AppName={#shortCutName}AppVersion={#MyAppVersion};AppVerName={#MyAppName} {#MyAppVersion}AppSupportURL={#MyAppURL}AppUpdatesURL={#MyAppURL}DefaultGroupName={#shortCutName}OutputBaseFilename=广西通信插件_V2.5DefaultDirName=D:\{#MyAppName}Compression=lzma
SolidCompression
=yes
UseSetupLdr
=yes
DisableWelcomePage
=no
;WindowVisible
=yes
;LicenseFile
=E:\GitHub\SVN\Project\ZwRQY\ZWRQY_ZWCAD\license.txt
WizardImageFile
=.\WizardImage.bmp
WizardSmallImageFile
=.\WizardSmallImage.bmp
AppPublisher
=ZWSOFT
AppPublisherURL
=http://www.zwcad.com/AppCopyright=Copyright (C) 1998-2019zwsof, Inc.
OutputDir
=.\
;管理员权限
PrivilegesRequired
=admin
Uninstallable
=yes
UninstallDisplayName
={#shortCutName}SetupIconFile=.\Setup\Setup\res\zwcad.ico

;覆盖安装
UsePreviousAppDir
=yes


[Messages]
BeveledLabel
=广州中望龙腾软件股份有限公司

[Languages]
Name: "Chinese"; MessagesFile: "compiler:Default.isl"

[Tasks]
Name: "desktopicon"; Description: "
{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: checkablealone; OnlyBelowVersion: 0,8.1Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

[Files]
Source: "..\OUT\Bin\x64\Release\SysZw\Gx_standardizeddrawing.exe"; DestDir: "
{app}\SysZw"; Flags: ignoreversion; Permissions: authusers-full
Source: "..\OUT\Bin\x64\Release\
*.*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Permissions: authusers-full
Source: "waterctrl.dll"; Flags: dontcopy
Source: "WizardImage.bmp"; Flags: dontcopy
; 注意: 不要在任何共享系统文件上使用“Flags: ignoreversion”

[Icons]
Name: "
{group}\{#shortCutName}"; Filename: "{app}\SysZw\{#MyAppExeName}"
Name: "
{group}\{cm:UninstallProgram,{#shortCutName}}"; Filename: "{uninstallexe}"
Name: "
{commondesktop}\{#shortCutName}"; Filename: "{app}\SysZw\{#MyAppExeName}"; Tasks: desktopicon
Name: "
{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppExeName}"; Filename: "{app}\SysZw\{#MyAppExeName}"; Tasks: quicklaunchicon


[Run]
Filename: "
{app}\SysZw\vcredist_x86.exe"; Parameters: /q; WorkingDir: {tmp}; Flags: skipifdoesntexist;StatusMsg: "Installing Microsoft Visual C++Runtime ..."; Check: NeedInstallVC9SP1
;Filename: "
{app}\SysZw\AceRedist.msi"; Parameters: /q; WorkingDir: {tmp}; Flags: skipifdoesntexist; StatusMsg: "Installing Microsoft Access Database Engine 2010Redistributable ...";
Filename: "
{app}\SysZw\msiexec.exe"; Parameters: "/i ""{app}\SysZw\AceRedist.msi"" /quiet";StatusMsg:"Installing Microsoft Access Database Engine 2010Redistributable ..."
Filename: "
{app}\SysZw\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(shortCutName, "&", "&&")}}"; Flags: nowait postinstall skipifsilent

[UninstallDelete]
Name:
{app}; Type: filesandordirs;

[code]
varvc9SP1Missing: Boolean;
vc9SP2Missing: Boolean;
functionInitializeSetup():boolean;var //MykeynotExist:boolean;//ResultCode: Integer;//uicmd: String;
version: Cardinal;
begin {检测是否安装vcredist_x86.exe} if RegQueryDWordValue(HKLM, 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{196BB40D-1578-3D01-B289-BEFC77A11A1E}', 'Version', version) =falsethen beginvc9SP1Missing :=true;end;//MykeynotExist:=true;//if RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{904DF7AD-D92A-4E81-A8ED-F0EB51701FFC}_is1', 'UninstallString', uicmd) then //begin {MyKeynotExist:= false;
Exec(RemoveQuotes(uicmd), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode);
} // ResultCode := MsgBox('检测到本机已安装其他版本!继续安装将会覆盖本机已安装版本!是否继续安装?', mbConfirmation, MB_YESNO);// if ResultCode = IDNO then // begin // MyKeynotExist:=false;// end;// if ResultCode = IDYES then // begin {Exec(RemoveQuotes(uicmd), '/silent /verysilent /suppressmsgboxes', '', SW_HIDE, ewWaitUntilTerminated, ResultCode);} // MyKeynotExist:=true;// end;//end;// Result:=MykeynotExist

Result:
=true;end;functionInitializeUninstall(): Boolean;beginResult:=true;if MsgBox('卸载将会清空安装目录,请确认已导出图元库!请确认已导出图元库!请确认已导出图元库!是否继续卸载?', mbConfirmation, MB_YESNO) = IDYES then beginResult:=true;end elseResult:=false;end;functionNeedInstallVC9SP1(): Boolean;beginResult :=vc9SP1Missing;end;functionNeedInstallVC9SP2(): Boolean;beginResult :=vc9SP2Missing;end;{实现水波纹效果} functionenablewater(ParentWnd: HWND; Left, Top: integer; Bmp: HBITMAP;
WaterRadius, WaterHeight: integer): BOOL; external
'enablewater@files:waterctrl.dll stdcall';//ParentWnd 放置特效窗口的父窗口句柄。//Left 左位置//Top 上位置//Bmp 位图句柄。//WaterRadius 水纹半径,会令到水纹看起来范围更广。//WaterHeight 水纹高度,会令到水纹看起来更深。//注意,水纹插件自动根据图片来设定高度和宽度,//另外水纹底图必须是翻转的图片,显示的时候会翻转图片来显示。function waterblob(x, y: integer; radius, height: integer): BOOL; external 'waterblob@files:waterctrl.dll stdcall';//在 x,y 点产生半径为radius, 高度为height 的水纹。function flattenwater(): BOOL; external 'flattenwater@files:waterctrl.dll stdcall';//平伏所有水纹。function disablewater(): BOOL; external 'disablewater@files:waterctrl.dll stdcall';//释放水纹插件function setwaterparent(ParentWnd: HWND): BOOL; external 'setwaterparent@files:waterctrl.dll stdcall';//v2 新增,设置水纹插件的父句柄varbmp: TBitmap;procedureInitializeWizard();varLabelDate: Tlabel;
uicmd: String;
beginExtractTemporaryFile('WizardImage.bmp');
bmp :
=TBitmap.create;
bmp.LoadFromFile(ExpandConstant(
'{tmp}\WizardImage.bmp'));

enablewater(WizardForm.WelcomePage.Handle,
0, 0, bmp.Handle, 3, 50);{欢迎页面添加文字}WizardForm.WelcomeLabel2.Autosize :=true;

LabelDate :
=Tlabel.Create(WizardForm);

LabelDate.Autosize :
=true;

LabelDate.Caption :
= '本程序由中望应用研发制作!'#10#13#10#13'了解更多ZWCAD信息请登录:https://www.zwcad.com/';if RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{904DF7AD-D92A-4E81-A8ED-F0EB51701FFC}_is1', 'UninstallString', uicmd) then beginLabelDate.Font.Color := clred; //修改文字颜色
LabelDate.Caption :
= '检测到本机已安装其他版本,继续安装将会覆盖原版本!' #10#13#10#13'请确认已导出相关图元库!' end;


LabelDate.Parent :
=WizardForm.WelcomePage;

LabelDate.Left :
=WizardForm.WelcomeLabel2.Left;

LabelDate.Top :
= WizardForm.WelcomeLabel2.Top +WizardForm.WelcomeLabel2.Height +80;end;procedureCurPageChanged(CurPageID: Integer);begin if CurPageID = wpWelcome then beginsetwaterparent(WizardForm.WelcomePage.Handle);
waterblob(
70, 198, 10, 1000);end else if CurPageID = wpFinished then beginsetwaterparent(WizardForm.FinishedPage.Handle);
waterblob(
70, 198, 10, 1000);end elseflattenwater();end;procedureDeinitializeSetup();begindisablewater();
bmp.Free;
end;


————————————————
版权声明:本文为CSDN博主「wang161019」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wang161019/article/details/91491300

 

家里的电脑上,安装了Arch32与Arch64。不记得以前做过什么操作,

导致在Arch32下,Thunar启动后,其环境变量缺失很多内容。

主要在PATH及LD_LIBRARY_PATH几个关键变量缺失,导致很多功能使用不便

经过几天的摸索,终于找到原凶。

现象是:Thunar启动后,环境变量缺失很多

定位经历:由于同时有Arch32与Arch64,因此可以反复启动对比。

首先找到线索:

1.通过进程树对比,有问题的环境下,Thunar启动后的父进程是Systemd

2.而正常环境下,Thunar启动后的父进程是xfce4-session

同时查看其启动参数,得到信息

1.有问题的环境下,Thunar启动参数是 --daemon

2.正常环境则会带--sm-id xxxxxxxxxx-yyyyyyyyy字样

从XFCE4启动流程可知,xfce4-session负责拉起包括xfdesktop/xfce4-panel/thunar等多个进程

因此问题原因推进到Thunar的启动方式不正确。

定位手段不足,反复查看systemd等的系统日志,也没查找到有启动Thunar失败的提示。

无奈去查xfce-session的代码,发现其提供调试手段,环境变量中有XFSM_VERBOSE时,会记录日志到当前用户目录下

在/etc/profile中增加变量XFSM_VERBOSE后,对比问题环境、正常环境的日志,发现在在XFSM模块加载初始会话时,就缺少Thunar项

原因定位到了,就是初始会话中缺少Thunar。

xfce-session启动时,先根据初始会话,依次加载启动每个APP。

加载完成后,会检查XFCE4几个关键组件是否启动,如果没有启动,则以Failsafe方式启动缺失的组件。

Thunar正是由此启动起来的。

修复办法,首先在问题环境中,进系统后打开“启动与会话”,然后删除相应缺省会话,重启发生不生效!

想了一下,XFCE4在正常退出时,会自动保存当前会话,因此操作就没有作用。

最后还是得手工来操作:进入正常环境,将问题环境的分区mount上来,找到HOME目录下进入到

~/.cache/sessions,删除xfce相应的信息

再进入问题环境,可以发现环境已经修复。

 

android studio的CMakeLists.txt写好后,在Studio中编译没问题,在命令编译时则需要配置很多参数才能成功

示例CMakeLists.txt文件:

cmake_minimum_required(VERSION 3.4.1)set(UVC_LIBS UVCCamera uvc usb100 jpeg-turbo1500)
FOREACH(UVC_LIB ${UVC_LIBS})
add_library(${UVC_LIB} SHARED IMPORTED)
set_target_properties(${UVC_LIB} PROPERTIES IMPORTED_LOCATION
${CMAKE_CURRENT_SOURCE_DIR}
/lib/${ANDROID_ABI}/lib${UVC_LIB}.so) ENDFOREACH(UVC_LIB)set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DFFFFFFF_DETECTOR_EXPORT -std=c++11")

add_library(XXXXX SHARED
${CMAKE_CURRENT_SOURCE_DIR}
/src/BBBB/XDFD.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/BBBB/DFDSF.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/BBBB/base64/CBase64.cpp
${CMAKE_CURRENT_SOURCE_DIR}
/src/BBBB/camera/AAAA.cpp )

target_include_directories(XXXXX PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}
/inc ${CMAKE_CURRENT_SOURCE_DIR}/src/XXX)

target_link_libraries(SL3DCameraCtrl
${UVC_LIBS}
android
log)

由于使用了STL,整个CMAKE执行的命令行写成如下:

D:\10.AndroidSDK\cmake\3.10.2.4988404\bin\cmake.exe -G "Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE="%ANDROID_NDK%\build\cmake\android.toolchain.cmake" ..\..\ -DCMAKE_MAKE_PROGRAM="%ANDROID_NDK%\prebuilt\windows-x86_64\bin\make.exe" -DCMAKE_BUILD_TYPE=Release -DANDROID_ABI=arm64-v8a -DANDROID_PLATFORM=android-21 -DANDROID_STL=c++_static

用于编译的批处理文件如下:

set ANDROID_NDK=D:\10.AndroidSDK\ndk\android-ndk-r15bmkdir build\arm64-v8acd    build\arm64-v8a

D:
\10.AndroidSDK\cmake\3.10.2.4988404\bin\cmake.exe -G "Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE="%ANDROID_NDK%\build\cmake\android.toolchain.cmake" ..\..\ -DCMAKE_MAKE_PROGRAM="%ANDROID_NDK%\prebuilt\windows-x86_64\bin\make.exe" -DCMAKE_BUILD_TYPE=Release -DANDROID_ABI=arm64-v8a -DANDROID_PLATFORM=android-21 -DANDROID_STL=c++_static
D:
\10.AndroidSDK\cmake\3.10.2.4988404\bin\cmake.exe --build . cd ..\..\