Я создаю библиотеку для взаимодействия с чертежом определенного типа файла.Эта библиотека должна использовать стороннюю библиотеку, чтобы выполнить некоторую обработку для этого конкретного типа файла.Эта сторонняя библиотека требует от пользователей создания некоторых внешних функций, которые она использует для создания типов данных на целевом оборудовании.
Итак, это выглядит так:
----------------
| |
| 3rd Party |
| Lib |
| |
----------------
|
|
\/
---------------
| |
| My Lib |
---------------
| externs |
---------------
|
|
\/
---------------
| |
| My App |
| |
| |
---------------
Мои вызовы приложенияМой Lib и говорит "нарисуй мне файл X", My Lib делает кучу мусора, в конце концов вызывает Сторонний Lib и говорит "файл процесса X".Сторонняя библиотека требует, чтобы было объявлено, что она использует несколько внешних объектов.
Я сделал все эти внешние элементы внутри My Lib.Моя проблема в том, что когда я связываю Мое приложение, оно говорит мне неопределенные ссылки на все внешние функции.Я не могу понять, почему.Вот один из внешних компонентов в My Lib, который будет вызывать сторонний Lib:
// inside typeConversions.c
extern int CreateShort(short* shortList, int numShorts)
{
int i;
for(i = 0; i < numShorts; i++)
{
BYTE_SWAP_SHORT(shortList[i]);
}
return ERROR_OK;
}
Когда я связываю Мое приложение, я получаю (среди нескольких других подобных ошибок):
open.cpp:неопределенная ссылка на `CreateShort '
Где open.cpp находится внутри сторонней библиотеки.
У меня есть и моя библиотека, и сторонняя библиотека, включенная в мое приложение.В идеале я не хочу показывать пользователям My Lib стороннюю версию Lib, поэтому, например, My App вообще не нужно будет включать стороннюю версию Lib, они не знают, что она вообще существует.Все, что должно быть разоблачено, это Мой Lib.Это возможно?Кто-нибудь знает, как исправить мою проблему со ссылками?