przez Cyfrowy Baron » wtorek, 30 wrzeÅ›nia 2008, 11:13
Próbuję napisać wtyczkę do Expressivi, sam kod nie stanowi problemu, jednak po wrzuceniu pluginu (DLL) do katalogu plugins programu, Expressivo nie rejestruje wtyczki. Stworzyłem wtyczkę testową zgodnie z opisem pliku pomocy Expressivo, ale nawet tak poprawnie napisana wtyczka nie jest rozpoznawana przez program. Sam program jest napisany w C++, wiec nie powinno być problemu. Przejrzałem kod przykładowej wtyczki "Clock", która jest przez Expressivo rozpoznawana i w moim pluginie jest dokładnie tak samo. Przypuszczam wiec, że to kwestia konfiguracji środowiska C++ Builder, byż może ktoś się zetknął z typ problemem.
Biblioteki włączam do projektu własnej wtyczki DLL, następnie dodaję kod zgodnie z opisem w pliku pomocy do Expressivo, właściwie na początek umieszczam po prostu dokładnie taki kod jaki znajduje się w opisie pomocy i zgodnie z opisem powinien zadziałać:
Wszystko ładnie się kompiluje, powstaje plik DLL, jednak Expressivo nie podłącza wtyczki, a przycyna tkwi w tym, że podczas kompilacji wtyczki otrzymuje komunikat z ostrzeżeniem [Linker Warning] Warning: Attempt to export non-public symbol 'pluginMain' z tym, że jest tych ostrzeżeń pięć, po jednym dla każdej definicji i jeden dla funkcji, czyli:
[Linker Warning] Warning: Attempt to export non-public symbol 'pluginMain' [Linker Warning] Warning: Attempt to export non-public symbol 'getInfo' [Linker Warning] Warning: Attempt to export non-public symbol 'registerAction' [Linker Warning] Warning: Attempt to export non-public symbol 'ttsCommand' [Linker Warning] Warning: Attempt to export non-public symbol 'pluginCommand'
To oznacza nie mniej, nie więcej, że dokonywana jest próba eksportu symboli (tutaj funkcji i definicji), które nie są publiczne. I w tym tkwi problem. Pytanie brzmi, jakich zmian dokonać w plikach, żeby funkcje stały się funkcjami publicznymi.
Jeżeli ktoś by mnie spytał jaką wtyczkę chcę napisać - taką która będzie czytała pliki z napisami do filmu z uwzględnieniem czasów, tak by powstał jeden duży plik zawierający ścieżkę dźwiękową zsynchronizowaną z filmem.
Pozostał tylko jeden komunikat z ostrzeżeniem: [Linker Warning] Warning: Attempt to export non-public symbol '_getInfo' No i tutaj nie wiem co zrobić z tą funkcją, dlaczego wciąż nie jest to funkcja publiczna.