Ссылка на статические библиотеки 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 ответ

Есть как минимум две проблемы с вашим решением и подходом:

  1. Программа, которую вы пишете, не должна содержать основную подпрограмму C++, то есть функцию main, Вместо этого точка входа для программы должна быть функцией с именем ABQmainс той же сигнатурой, что и обычная функция main,
  2. Вы должны скомпилировать код Abaqus C++ с помощью утилиты make Abaqus. Когда вы закончите писать свой код и захотите скомпилировать его, правильная команда для использования:

    abaqus make job = your_code.cpp

Если у вас есть Abaqus на вашей машине, то вы также должны иметь документацию. Раздел "Руководство пользователя по созданию сценариев Abaqus" содержит раздел "Использование C++ для доступа к выходной базе данных". Там вы можете найти некоторые примеры и детали, которые я указал здесь. Это должно стать хорошей отправной точкой для вашей работы.

РЕДАКТИРОВАТЬ: После указания на то, что вы хотите использовать Visual Studio для разработки и компиляции, обязательно проверьте системные требования для используемой версии Abaqus. Попробуйте использовать тот же компилятор Visual Studio C++, что и компилятор Abaqus. Simulia, скорее всего, использует более старую версию компилятора Visual Studio C++, чем вы.

Другие вопросы по тегам