2012-06-05 12 views
5

Tworzę wspólną bibliotekę obiektów, która będzie LD_PRELOADed z moim programem. W tej współużytkowanej bibliotece chcę również użyć niektórych zmiennych z mojego programu. Jaki jest sposób deklarowania takich zmiennych. Zauważ, że wspólna biblioteka obiektów jest kompilowana oddzielnie od mojego programu.Jak udostępnić zmienną we wspólnej bibliotece obiektów

Odpowiedz

2

Tak. Musisz połączyć swój program z --export-dynamic, aby tablica symboli programu była dostępna dla otwartych bibliotek. Jeśli chcesz kontrolować dokładnie, które symbole są dostępne i przy użyciu łącza libtool, możesz użyć parametrów, takich jak -export-symbols-regex, aby określić, które z nich są dostępne. Jeśli symbole wymagane przez bibliotekę nie są dostępne po załadowaniu programu, zawiodą z nieokreślonym symbolem. Niektóre platformy wymagają nieco innych flag łącza (szczególnie Windows). Rozważ skorzystanie z libtool, aby było to łatwiejsze, jeśli jeszcze nie masz.

Powiązane problemy