Ссылка на статические библиотеки API Abaqus C++ для чтения ODB-файлов
У меня на компьютере установлен Abaqus CAE, Visual Studio 2017, компилятор Visual C++. Я пытаюсь сослаться на статические библиотеки Abaqus CAE в моем проекте Visual Studio C++, чтобы прочитать мой файл ODB.
Это файл кода, который я пытаюсь скомпилировать и выполнить:
```
#include "pch.h"
#include <iostream>
#include <odb_API.h>
#include <odb_String.h>
#include <odb_Repository.h>
using namespace std;
int main()
{
cout << "Initializing API"<<endl;
odb_initializeAPI();
odb_String odbFilePath = "C:\\Users\\Dularish\\Desktop\\Temp_Toclear\\Job-1.odb";
try
{
odb_Odb& odb = openOdb(odbFilePath);
odb.close();
}
catch (odb_BaseException& ex)
{
cout << "Exception message : " << ex.UserReport().CStr() << endl;
}
catch (const std::exception& ex)
{
cout << "Default Exception message : " << ex.what() << endl;
}
cout << "Hello World!\n";
odb_finalizeAPI();
return 0;
}
```
Настройки проекта Visual Studio:
Платформа: X64 (я не смогу скомпилировать с X86)
Свойства конфигурации> Каталоги VC ++> Включить каталоги: C:\SIMULIA\Abaqus\6.14-3\code\include;$(IncludePath)
Свойства конфигурации> Каталоги VC ++> Библиотечные каталоги: C:\SIMULIA\Abaqus\6.14-3\code\lib;$(LibraryPath)
Свойства конфигурации> Линкер> Ввод> Дополнительные зависимости:
ABQDMP_Core.lib; ABQSMAAbuBasicUtils.lib.... и все остальные файлы, представленные в каталоге "C:\SIMULIA\Abaqus\6.14-3\code\lib".
С этими настройками я могу скомпилировать его без каких-либо ошибок, но при запуске приложения exe,
Я получаю следующую ошибку:
"Точка входа в процедуру? OpenOdb@@YAAEAVodb_Odb@@AEBVodb_String@@_N1VSMABasStringMode@@@Z не может быть расположен в библиотеке динамических ссылок ABQSMAOdbApi.dll"
Означает ли это, что мне не хватает статической библиотеки, содержащей метод openOdb?
Я пытаюсь связаться с людьми, которые уже знакомы с Abaqus ODB C++ API и могут помочь мне в этом.
Благодарю.
Редактировать 1: я не хочу использовать утилиту abaqus make, потому что хочу создать собственное приложение для постобработки на платформе.NET. Строки "odb_initializeAPI();" и "odb_finalizeAPI();" это строки, которые следует использовать, если я хочу получить доступ к Abaqus ODB API вне Abaqus CAE. Я на самом деле следую за этой страницей из документации сценариев " http://130.149.89.49:2080/v2016/books/cmd/default.htm?startat=pt05ch10s07.html"
Другой ресурс, который помог мне использовать этот подход: " https://www.reddit.com/r/fea/comments/8oqx5x/setting_up_abaqus_c_interface/"
1 ответ
Есть как минимум две проблемы с вашим решением и подходом:
- Программа, которую вы пишете, не должна содержать основную подпрограмму C++, то есть функцию
main
, Вместо этого точка входа для программы должна быть функцией с именемABQmain
с той же сигнатурой, что и обычная функцияmain
, Вы должны скомпилировать код Abaqus C++ с помощью утилиты make Abaqus. Когда вы закончите писать свой код и захотите скомпилировать его, правильная команда для использования:
abaqus make job = your_code.cpp
Если у вас есть Abaqus на вашей машине, то вы также должны иметь документацию. Раздел "Руководство пользователя по созданию сценариев Abaqus" содержит раздел "Использование C++ для доступа к выходной базе данных". Там вы можете найти некоторые примеры и детали, которые я указал здесь. Это должно стать хорошей отправной точкой для вашей работы.
РЕДАКТИРОВАТЬ: После указания на то, что вы хотите использовать Visual Studio для разработки и компиляции, обязательно проверьте системные требования для используемой версии Abaqus. Попробуйте использовать тот же компилятор Visual Studio C++, что и компилятор Abaqus. Simulia, скорее всего, использует более старую версию компилятора Visual Studio C++, чем вы.