Ссылка на статические библиотеки Abaqus C++ API для чтения файлов 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/"


person Dularish    schedule 31.01.2019    source источник


Ответы (1)


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

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

    abaqus make job=your_code.cpp

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

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

person hgazibara    schedule 31.01.2019
comment
Спасибо за ваш ответ. Однако я не хочу использовать утилиту abaqus make, потому что хочу создать собственное приложение для постобработки на основе платформы .NET. Строки odb_initializeAPI(); и odb_finalizeAPI(); это строки, которые следует использовать, если я хочу получить доступ к Abaqus ODB API вне Abaqus CAE. На самом деле я слежу за этой страницей из документации по сценариям 130.149 .89.49:2080/v2016/книги/cmd/ - person Dularish; 31.01.2019
comment
Другой ресурс, который помог мне использовать этот подход: reddit.com/r/ fea/comments/8oqx5x/setting_up_abaqus_c_interface - person Dularish; 31.01.2019
comment
@Dularish Я обновил свой ответ, добавив подсказку о совместимости компилятора. Это может быть одним из источников проблем. - person hgazibara; 31.01.2019