c++ - 参考 Abaqus C++ API 静态库读取 ODB 文件
问题描述
我的计算机中安装了 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 中找到”
这是否意味着我缺少一个包含 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++ 编译器。
推荐阅读
- python - 检测 Instagram 直播的开始
- javascript - mysql where子句和js
- python - 如何通过识别数据框中的公共列来添加数据框的所有数据?
- php - PHP file_get_contents():文件名不能为空在开发机器上工作 - PHP 7.2.24 vs 7.4?
- python - Amazon Lex 插槽验证:避免重新验证相同的插槽
- sql - 如何在 PostgreSQL 中按大写字母顺序排序?
- javascript - 在javascript中获取数据目录中的文件列表
- javascript - 错误 [ERR_HTTP_HEADERS_SENT]:在将标头发送到客户端后无法设置标头。如何发送数据以循环方式渲染
- python - 无法在 Python 2.7.10 中打开 URL。我的 Openssl 版本是 0.98
- django - 如何将图像添加到 Django 中的每个产品变体?