Я создаю пакет, который будет использоваться R (статистическая программа), я не эксперт, использующий это приложение, но мне удалось создать очень простой пакет, используя следующую логику, у меня есть некоторые классы в C ++, так как код должен быть скомпилирован с использованием компилятора R, и он допускает только код C, у меня есть код-обертка C, который вызывает методы C ++, а позже у меня есть скрипт R, который вызывает методы, предоставляемые C код, так что в основном это сообщение, как R <-> C <-> C ++.
Полный учебник, который я использовал для создания этого пакета, найден здесь , я добавляю его как ссылку.
Теперь моя проблема в том, что мне нужно добавить некоторые функциональные возможности в пакет, который я уже создал, что мне нужно сделать, это добавить код для позднего связывания с COM-объектом, который является другим продуктом, который я создал и который зарегистрирован с использованием инструмент для регазм.
Это код на C ++, который я использую для поздней привязки к объекту COM, я пытаюсь использовать IDispatch для этого:
{
...
CLSID clsid;
HRESULT hr = CLSIDFromProgID((WCHAR*)"My Com object ProgId", &clsid);
if(FAILED(hr))
return;
...
}
Я не вставил весь код, потому что только с этими строками компилятор доставляет мне проблемы, команда, которую я использую для компиляции, -
R CMD SHLIB Cclass.cc C++class.cc
Где "Cclass.cc" содержит код C, который вызывает методы c ++, а "C ++ class.cc" фактически код C ++.
Когда я компилирую эти классы, компилятор говорит:
<code>"undefined reference to `CLSIDFromProgID@8'collect2: ld returned 1 exit status"
Я уверен, что добавил все необходимые мне заголовочные файлы, поэтому я считаю, что моя проблема в том, что я не включаю ole32.lib и oleaut32.lib, которые являются статическими библиотеками.
Итак, мой вопрос: как я могу включить эти библиотеки, чтобы иметь возможность использовать методы для позднего связывания, такие как CLSIDFromProgID (...) или QueryInterface (...). Также, если кто-то считает, что моя проблема не в связывании этих библиотек, а в чем-то еще, было бы замечательно, если бы мне указали, в чем может заключаться моя проблема.
Также имейте в виду, что мне нужно связать эти статические библиотеки так, чтобы они могли без проблем компилироваться компилятором R, который, если я не ошибаюсь, является просто компилятором c.