Ссылка на статические библиотеки API Abaqus C ++ для чтения ODB-файлов - PullRequest
0 голосов
/ 31 января 2019

У меня на компьютере установлен 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)

Свойства конфигурации> Linker> Input> Дополнительные зависимости:

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 Ответ

0 голосов
/ 31 января 2019

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

  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 ++, чем вы.

...