Связанный .lib-файл связан с .dll
У меня была такая же проблема. Скажем, у меня есть проекты MyProject и TestProject. Я эффективно связал файл lib для MyProject с TestProject. Однако этот файл lib был создан, так как была построена DLL для MyProject. Кроме того, я не содержал исходный код для всех методов в MyProject, но только доступ к точкам входа DLL.
Чтобы решить проблему, я построил MyProject как LIB и связал TestProject с этим .lib-файлом (скопируйте вложенный файл .lib в папку TestProject). Затем я смогу снова создать MyProject как DLL. Он компилируется, поскольку lib, с которым связан TestProject, содержит код для всех методов в классах MyProject.
Я думаю, вы можете получить то же самое:
StackTraceElement[] cause = Thread.currentThread().getStackTrace();
Если вы хотите, чтобы это было как String и использовали Apache Commons:
org.apache.commons.lang.exception.ExceptionUtils.getFullStackTrace(new Throwable())
Ну, вы можете немного улучшить его, не исключив при этом исключение.
Exception ex = new Exception();
ex.fillInStackTrace();
StackTraceElement[] cause = ex.getStackTrace();
На самом деле, я только что проверил: конструктор уже называет fillInStackTrace()
. Поэтому вы можете упростить его:
StackTraceElement[] cause = new Exception().getStackTrace();
Это на самом деле то, что Thread.getStackTrace()
делает, если он вызывается в текущем потоке, поэтому вы можете предпочесть его использовать.