【问题标题】:Reference Abaqus C++ API static libraries to read ODB files参考 Abaqus C++ API 静态库读取 ODB 文件
【发布时间】:2019-06-24 11:56:20
【问题描述】:

我的计算机中安装了 Abaqus CAE、Visual Studio 2017、Visual C++ 编译器。我正在尝试在我的 Visual Studio C++ 项目中引用 Abaqus CAE 的静态库来读取我的 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中找不到”

Error Screenshot

这是否意味着我缺少一个包含 openOdb 方法的静态库?

我正在尝试与已经熟悉 Abaqus ODB C++ API 的人联系,他们可以在这方面为我提供帮助。

谢谢。

编辑 1:我不想使用 abaqus make 实用程序,因为我想构建自己的基于 .NET 平台的后处理应用程序。 “odb_initializeAPI();”行和“odb_finalizeAPI();”如果我想在 Abaqus CAE 之外访问 Abaqus ODB API,应该使用这些行。我实际上是从脚本文档“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/

【问题讨论】:

    标签: c++ abaqus post-processing finite-element-analysis


    【解决方案1】:

    您的解决方案和方法至少存在两个问题:

    1. 您编写的程序不得包含 C++ 主例程,即函数 main。相反,程序的入口点必须是一个名为 ABQmain 的函数,与常规函数 main 具有相同的签名。
    2. 您必须使用 Abaqus make 实用程序编译您的 Abaqus C++ 代码。一旦你完成了你的代码并想要编译它,正确的使用命令是:

      abaqus make job=your_code.cpp

    如果您的机器上有 Abaqus,那么您还应该有文档。 “Abaqus 脚本用户指南”部分包含“使用 C++ 访问输出数据库”部分。在那里你可以找到一些例子和我在这里指出的细节。这应该是您工作的良好起点。

    编辑:在指出您希望使用 Visual Studio 进行开发和编译后,请务必检查您正在使用的 Abaqus 版本的系统要求。尝试使用与编译 Abaqus 相同的 Visual Studio C++ 编译器。 Simulia 很可能使用的是旧版本的 Visual Studio C++ 编译器。

    【讨论】:

    • 感谢您的回答。但是,我不想使用 abaqus make 实用程序,因为我想构建自己的基于 .NET 平台的后处理应用程序。 “odb_initializeAPI();”行和“odb_finalizeAPI();”如果我想在 Abaqus CAE 之外访问 Abaqus ODB API,应该使用这些行。我实际上是从脚本文档“130.149.89.49:2080/v2016/books/cmd/…”中关注这个页面
    • 引导我使用这种方法的另一个资源:“reddit.com/r/fea/comments/8oqx5x/setting_up_abaqus_c_interface
    • @Dularish 我更新了我的答案,提示编译器兼容性。这可能是问题的根源之一。
    猜你喜欢
    • 1970-01-01
    • 2021-12-14
    • 2021-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多