Что могло бы препятствовать тому, чтобы DLL загрузился с LoadLibrary?

Легко определить свою собственную функцию

rr1 <- function(x) diff(x) / x[-length(x)]
rr1(x)
#[1] 0.02000000 0.01960784 0.01923077 0.01886792 0.01851852

Или с помощью классического цикла for

rr2 <- function(x) {
    r <- numeric(length(x) - 1)
    for (i in 1:(length(x) - 1)) r[i] <- (x[i + 1] - x[i]) / x[i]
    r
}
rr2(x)
#[1] 0.02000000 0.01960784 0.01923077 0.01886792 0.01851852

И microbenchmark сравнения обоих методов для большего вектора [ 115] с 10^4 записями

x <- seq(1, 1000, length.out = 10^4)
library(microbenchmark)
res <- microbenchmark(
    rr1 = rr1(x),
    rr2 = rr2(x))
#Unit: microseconds
# expr      min       lq      mean    median        uq       max neval cld
#  rr1  157.596  190.554  518.0451  472.6565  501.5825  9565.411   100  a
#  rr2 2057.669 2098.655 2397.8759 2121.2795 2227.8395 10124.874   100   b
5
задан Mark Ransom 8 May 2009 в 22:37
поделиться

6 ответов

A missing dependency? Have you checked with Dependency Walker that all referenced libraries are found?

5
ответ дан 14 December 2019 в 01:16
поделиться

If you attach a debugger during the LoadLibrary call, it may spew error info to debug output. In addition to the other suggestions here, if the manifest has an error in it this issue will occur.

I'm pretty sure its a dependency issue for you though. Try the ProcMon thing, and also try running on Vista to see if that solves the problem. You can get a test VPC image here.

3
ответ дан 14 December 2019 в 01:16
поделиться

You might try testing while ProcMon is running and see if any errors are visible in it while file monitoring is enabled.

0
ответ дан 14 December 2019 в 01:16
поделиться

Однажды я попал в тот же кошмар. Невозможно было ничего диагностировать, я только что обнаружил, что сброс пути порядка следования списка поиска dll (ключевое слово здесь, вероятно, «список», а не «порядок») устранил проблему.

SetDllDirectory (NULL);

Объяснение заключается в том, что сторонняя DLL в середине, вероятно, возилась с ней, не восстанавливая ее исходное состояние. Это могло объяснить, почему работало только ваше тестовое приложение.

1
ответ дан 14 December 2019 в 01:16
поделиться

Кроме того, Обходчик зависимостей может быть запущен с использованием параметра профиля. В этом случае exe должен быть загружен в обходчик зависимостей. После этого меню Можно использовать "Профиль".

После этого запускается приложение и заполняется дерево dll. Это также покажет, если отсутствует задержка загрузки dll и другие вещи.

0
ответ дан 14 December 2019 в 01:16
поделиться

Если вы не найдете ответа, проверив зависимости, я бы посоветовал сосредоточиться на возможных проблемах, связанных с архитектурой.

Вы упомянули, что используете автономную тестовую среду, но когда вы пробуете ее в обычной среде, она не работает. Можно ли настроить бизнес-функцию на сервере?

Прошло много времени с тех пор, как я последний раз работал с JDE. Я помню, как однажды я написал BSFN на C для вызова нескольких UBE в своего рода синхронизацию, и он отлично работал на моей локальной машине и не работал, когда я тестировал на сервере. Было что-то в том, что сервер не мог найти DLL (хотя я указывал путь) и некоторые требуемые настройки. Кроме того, в моем случае была критическая разница: на моей машине

0
ответ дан 14 December 2019 в 01:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: