Closed JSUYA closed 2 years ago
I couldn't find a way to make this work without fixing the dependent libraries. I think libdali2 must be recompiled with correct options.
Both dali and flutter-tizen use -std=c++17
and use _GLIBCXX_USE_CXX11_ABI
with default value. so I couldn't understand this issue clearly.
After looking at it for a while, I think it's because custom libcxx is used when building engine.
so, it seems that
see here, you can check the detailed build configuration.
use_flutter_cxx = is_clang && (is_linux || is_android || is_mac)
if (use_flutter_cxx) {
_native_compiler_configs += [
"//third_party/libcxxabi:libcxxabi_config",
"//third_party/libcxx:libcxx_config",
]
}
So... It's my guess, but if any C++ library interface provided by Tizen includes a libcxx's interface, it looks like it won't be available In our current build configuration at all.
use_flutter_cxx = is_clang && (is_linux || is_android || is_mac)
I wonder if this is the result of our intention. @flutter-tizen/maintainers Does anyone know?
@bbrto21 libc++ is statically linked into the engine and embedder to avoid any subtle compatibility issue. For example, the PR https://github.com/flutter-tizen/engine/pull/205 already assumes this fact.
@JSUYA
I modified the custom configuration of the build root a bit, and I succeeded in linking the Dali api.
also, I succeeded in creating the egl surface using Dali::NativeImageSourceQueue
as you guided and I set the imageUrl
to imageView on FlutterNUIApplcation I made, but It doesn't seem to work.
Could you explain your idea in more detail? I don't have any experience with Dali.
I want to use TizenFX API Level 9. how should I change the project configuration? I tried several things, but it seems that API Level 4 is still selected.
Do you mean a .NET app?
api-version
attribute of the ui-application
element in tizen-manifest.xml
to 9.tizen90
in Runner.csproj
.
- Set the
api-version
attribute of theui-application
element intizen-manifest.xml
to 9.- Change the target framework moniker to
tizen90
inRunner.csproj
I tried following the instructions above, but it didn't work. @WonyoungChoi Could you possibly help on this?
@WonyoungChoi Could you possibly help on this?
I got the answer from him that the documentation is wrong. the API I was trying to use was not included in the latest release of TizenFX API Level 9.
@JSUYA
Here is a buildable changes with dali2
dependency, before using this patch, you must apply for_dali.patch
in this changes to the build root. and you must change the FlutterApplication base class from CoreUIApplication to NUIApplication
This change is workaround and some headers had to be added to the existing implementation because libcxx
implementations are different
I am researching for rendering flutter-tizen in NUI (Tizen Natural User Interface (C#)) For this, I must use DALi(Tizen C++ UIFW) in engine(tizen renderer). Among the DALi APIs, there is an API that returns
std::string
and when I want to use this API, the link error occurred in engine build. ( ex: const std::string& Dali::Toolkit::ImageUrl::GetUrl() const)I found symbol for this API with the
nm
command. there is a [abi:cxx11] tag.I was studying this and found that the engine compile script need
__GLIBCXX_USE_CXX11_ABI = 1 //or 0
define. (https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html) I added it to build script and tried to build, but the problem was not resolved.If you guys has any ideas for script modifications to use [abi:cxx11] api, please let me know.
(my tizen/Build.gn diff)
compiler/build.gn
tizen-tools
Sample Dali code