2015-06-11 4 views
0

У меня есть библиотека, скажем mylibrary.dll, что есть в C++ код, который я хочу запустить в R. Я сделал это:Ошибка при попытке вызова C++ DLL-библиотеку в R

dyn.load("mylibrary.dll") 
.Call("myfun") 

я получаю:

Error in .Call("myfun") : C symbol name "myfun" not in load table 

Теперь я видел несколько ответов на подобные проблемы, на здесь и на других сайтах, но когда я попытался каждым решение, каждый, казался, требует наличия доступа к исходному коду, например, добавление что-то вроде этого: extern "C" на код C++ или перекомпилировать код определенным образом. Все, что у меня есть, это DLL-файл, и я хотел бы использовать его непосредственно для вызова из R функций, содержащихся в нем.

+0

Кстати, когда я запустил первую строку кода я получил это : 'Предупреждающее сообщение: В inDL (x, as.logical (local), as.logical (now), ...): DLL попытался изменить управляющее слово FPU с 8001f до 9001f'. Я видел в другом месте, что это можно игнорировать. –

+0

Почему бы вам не включить ваш код? – nrussell

+1

Пробовали ли вы просматривать загрузочный стол? В Unix вы должны использовать команду 'nm', но в Windows ... я не знаю. Возможно, попробуйте некоторые из этих материалов в [this] (http://stackoverflow.com/questions/4438900/how-to-view-dll-functions) потоке? –

ответ

0

Решение: имя функции отличается от того, что я ожидал. Я пошел в поток, который Алексей предложил в комментариях, и оттуда смог использовать один из предлагаемых инструментов (DLL export viewer), чтобы получить список функций, где я нашел правильное имя.

(Увы, мне теперь нужно выяснить, почему R фиксирует вверх, когда я вызываю функцию, но на мой вопрос здесь делается!)

Смежные вопросы