正确使用libdl和动态链接库

问题描述 投票:8回答:4

我需要动态链接我创建的库。我不确定问题是什么。这一切都正确编译,但我总是抓住handle作为NULL指针:

void *handle;
char *error;
handle = dlopen ("./hw11-lib-michaelSchilling.so", RTLD_LAZY);
//same error comes up with full path as well as './hw11...'
if(!handle){
    error = dlerror();
    printf("%s\n", error);
    printf("Error loading library.\n");
    exit(1);
}

我无法通过这个错误,我不确定什么可能是错的。我很确定我已经正确编译了所有内容。以下是我使用的编译步骤:

gcc -rdynamic -c hw11-lib-michaelSchilling.c -o hw11-lib-michaelSchilling.so
gcc hw11-michaelSchilling-4.c -ldl -o hw11-michaelSchilling-4

我收到的错误是读取的

只能加载ET_DYN和ET_EXEC。

c dll shared-libraries
4个回答
© www.soinside.com 2019 - 2024. All rights reserved.