Skip to content

Commit 7d74790

Browse files
author
drswinghead
committed
fix CI. fix android lib search path
1 parent ce06801 commit 7d74790

File tree

3 files changed

+24
-14
lines changed

3 files changed

+24
-14
lines changed

Dockerfile.mingw

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM base/archlinux
1+
FROM archlinux/base
22

33
ADD run-mingw.sh /root/
44
RUN chmod +x /root/run-mingw.sh

qtrt/ffi_invoke.go

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -173,17 +173,6 @@ func init() {
173173
}
174174

175175
func init_ffi_invoke() {
176-
loadModule := func(libpath string, modname string) error {
177-
var err error
178-
var lib FFILibrary
179-
lib, err = NewFFILibrary(libpath)
180-
ErrPrint(err, lib)
181-
// log.Println(lib)
182-
if err == nil {
183-
qtlibs[modname] = lib
184-
}
185-
return err
186-
}
187176

188177
// lib dir prefix
189178
// go arch name => android lib name
@@ -213,6 +202,9 @@ func init_ffi_invoke() {
213202
if len(dirs) > 0 {
214203
return dirs[0] + fmt.Sprintf("/lib/%s/", archs[runtime.GOARCH])
215204
}
205+
if FileExist(fmt.Sprintf("/data/data/%s/lib/", appdir)) {
206+
return fmt.Sprintf("/data/data/%s/lib/", appdir)
207+
}
216208
}
217209
return ""
218210
}
@@ -228,11 +220,23 @@ func init_ffi_invoke() {
228220
return fmt.Sprintf("%slibQt5%s.%s", dirp, modname, oslibexts["linux"])
229221
}
230222

223+
loadModule := func(libpath string, modname string) error {
224+
var err error
225+
var lib FFILibrary
226+
lib, err = NewFFILibrary(libpath)
227+
ErrPrint(err, lib, libpath, modname)
228+
if err == nil {
229+
qtlibs[modname] = lib
230+
}
231+
return err
232+
}
233+
231234
mods := []string{"Inline"}
232235
// TODO auto check static and omit load other module
233236
if !UseWrapSymbols { // raw c++ symbols
234237
mods = append([]string{"Core", "Gui", "Widgets", "Network", "Qml", "Quick", "QuickControls2", "QuickWidgets"}, mods...)
235238
}
239+
236240
for _, modname := range mods {
237241
libpath := getLibFile(getLibDirp(), modname)
238242
loadModule(libpath, modname)
@@ -339,6 +343,9 @@ func ForwardFFIFunc(pxysymname string, symname string, args ...interface{}) (VRe
339343
func isUndefinedSymbolErr(err error) bool {
340344
return err != nil && strings.Contains(err.Error(), ": undefined symbol: ")
341345
}
346+
func isNotfoundSymbolErr(err error) bool {
347+
return err != nil && strings.Contains(err.Error(), "Symbol not found:")
348+
}
342349

343350
// 直接使用封装的C++ symbols。好像在这设置没有用啊,符号不同,因为参数表的处理也不同,还是要改生成的调用代码。
344351
var UseWrapSymbols bool = true // see also qtrt.UseCppSymbols TODO merge
@@ -355,8 +362,8 @@ func GetQtSymAddr(symname string) unsafe.Pointer {
355362
func GetQtSymAddrRaw(symname string) unsafe.Pointer {
356363
for _, lib := range qtlibs {
357364
addr, err := lib.Symbol(symname)
358-
if !isUndefinedSymbolErr(err) {
359-
ErrPrint(err, "")
365+
if !isUndefinedSymbolErr(err) && !isNotfoundSymbolErr(err) {
366+
ErrPrint(err, lib.Name(), symname)
360367
}
361368
if err != nil {
362369
continue

qtrt/ffi_wrapper.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,19 @@ import (
88

99
// Library is a dl-opened library holding the corresponding dl.Handle
1010
type FFILibrary struct {
11+
name string
1112
handle dl.Handle
1213
}
1314

1415
// NewFFILibrary takes the library filename and returns a handle towards it.
1516
func NewFFILibrary(libname string) (lib FFILibrary, err error) {
1617
//libname = get_lib_arch_name(libname)
18+
lib.name = libname
1719
lib.handle, err = dl.Open(libname, dl.Now)
1820
return
1921
}
2022

23+
func (lib FFILibrary) Name() string { return lib.name }
2124
func (lib FFILibrary) Close() error {
2225
return lib.handle.Close()
2326
}

0 commit comments

Comments
 (0)