Gcc link is Undefined, but the library contains the corresponding character

I tried to link my program with libmodbus opensource lib. After some problems with automake, I finally managed to compile it.

But now I get an undefined error reference from gcc when I use one of the functions that the library provides in my own program:

main.cpp:(.text+0x21): undefined reference to `modbus_udp_init(char*, int, __modbus_udp_handle*)'
collect2: Fehler: ld gab 1 als Ende-Status zurück

From my point of view, the gcc arguments for compiling my project are correct:

g++ -v -I ../libmodbus/modbus -o main main.cpp -L../libmodbus/modbus/.libs/ -lmodbus

I checked with help nmif the function is really in this library, but everything looks good to me (I removed some parts from the output to prevent too much output):

$ nm ../libmodbus/modbus/.libs/libmodbus.a 

modbus.o:
0000000000000590 T crc16
                 U free
                 U malloc
                 U memcpy
0000000000000b40 T modbus_diagnostics
0000000000000d90 T modbus_error_get_exception_code
0000000000000100 C modbus_error_str
0000000000000cf0 T modbus_exception
[...]

modbus-udp.o:
                 U bcopy
                 U close
                 U __errno_location
                 U gethostbyname
                 U modbus_error_str
                 U modbus_tcp_frame_pack
                 U modbus_tcp_frame_parse
0000000000000000 T modbus_udp_close
0000000000000030 T modbus_udp_init
0000000000000220 T modbus_udp_recv
0000000000000190 T modbus_udp_send
0000000000000010 r __PRETTY_FUNCTION__.4582
0000000000000000 r __PRETTY_FUNCTION__.4592
                 U recvfrom
                 U sendto
                 U setsockopt
                 U snprintf
                 U socket
                 U strerror

modbus-tcp.o:
[...]


modbus-serial.o:
[...]

Does anyone have an idea why gcc cannot resolve a character?

+4
1

noloader, extern "C", libmodbus - C-. :

extern "C" {
    #include <modbus.h>
    #include <modbus-udp.h>
}

. !

+3

Source: https://habr.com/ru/post/1535160/


All Articles