diff --git a/src/lv_interop.cc b/src/lv_interop.cc index d42fe0d2..a359e6d6 100644 --- a/src/lv_interop.cc +++ b/src/lv_interop.cc @@ -4,6 +4,7 @@ #include #include #include +#include #ifndef _WIN32 #include @@ -69,21 +70,17 @@ namespace grpc_labview return; } - auto lvModule = dlopen(nullptr, RTLD_LAZY); - if (lvModule != nullptr) - { - NumericArrayResizeImp = (NumericArrayResize_T)dlsym(lvModule, "NumericArrayResize"); - PostLVUserEvent = (PostLVUserEvent_T)dlsym(lvModule, "PostLVUserEvent"); - Occur = (Occur_T)dlsym(lvModule, "Occur"); - } - if (NumericArrayResize == nullptr) + NumericArrayResizeImp = (NumericArrayResize_T)dlsym(RTLD_DEFAULT, "NumericArrayResize"); + PostLVUserEvent = (PostLVUserEvent_T)dlsym(RTLD_DEFAULT, "PostLVUserEvent"); + Occur = (Occur_T)dlsym(RTLD_DEFAULT, "Occur"); + RTSetCleanupProc = (RTSetCleanupProc_T)dlsym(RTLD_DEFAULT, "RTSetCleanupProc"); + + if (NumericArrayResizeImp == nullptr || + PostLVUserEvent == nullptr || + Occur == nullptr || + RTSetCleanupProc == nullptr) { - std::cout << "Loading LabVIEW Runtime engine!" << std::endl; - lvModule = dlopen("liblvrt.so", RTLD_NOW); - NumericArrayResizeImp = (NumericArrayResize_T)dlsym(lvModule, "NumericArrayResize"); - PostLVUserEvent = (PostLVUserEvent_T)dlsym(lvModule, "PostLVUserEvent"); - Occur = (Occur_T)dlsym(lvModule, "Occur"); - RTSetCleanupProc = (RTSetCleanupProc_T)dlsym(lvModule, "RTSetCleanupProc"); + exit(grpc::StatusCode::INTERNAL); } }