我的计算机上安装了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++主例程,即main函数。相反,程序的入口点必须是一个名为ABQmain的函数,其签名与常规函数main相同。
  • 您必须使用Abaqus make实用程序来编译Abaqus C++代码。完成代码编写并希望对其进行编译后,要使用的正确命令是:

    abaqus make job = your_code.cpp

  • 如果您的计算机上装有Abaqus,则还应该具有说明文件。 “Abaqus脚本用户指南”部分包含“使用C++访问输出数据库”部分。在这里,您可以找到一些示例以及我在此处指出的详细信息。这应该是您工作的良好起点。

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

    09-07 09:50