「dlopen」への未定義参照エラーはどういう意味ですか?

「dlopen」への未定義参照エラーはどういう意味ですか?

c ファイルをコンパイルしようとすると、次のメッセージが表示されます。

undefined reference to 'dlopen'
undefined reference to 'dlsym'

このトピックに関する他の記事では、-ldlリンカオプションまたはコマンドラインにgcc test.c -ldl。しかし、これはうまくいきません。この場合、ディレクトリに.oファイルまたはa.outがありますが、このファイルを実行することはできません。コマンドラインに./a.outと入力するとsegmentation faultエラーが発生します。これは私のコードです。

#include <stdio.h>
#include <stdlib.h>
#include <dlfcn.h>
#include "PI_GCS2_DLL_PF.h"
int main(){
   void* hPI_Dll = dlopen("test.so", RTLD_NOW);
   int ID = -1;
   PFPI_ConnectRS232ByDevName = (PI_ConnectRS232ByDevName);
   PI_ConnectRS232ByDevName = (PFPI_ConnectRS232ByDevName) dlsym(hPI_Dll, "PI_ConnectRS232ByDevName");

...
}

私はRaspberry PIと非常によく似たRockPI 4(Linux)で開発中です。それでは、この「バグ」を修正する方法は?ライブラリをインストールする必要がありますか?

ベストアンサー1

おすすめ記事