我试图通过创建一个c ++ dll并在Unity(c#)中调用它来获得第三方重建库ReconstructMe。
我已经使用提供的dll工作了,但调用非托管函数调用会在多个函数的每次更新时达到性能,例如:
我正在调用的每个更新下面的必要电话:
reme_sensor_grab
reme_sensor_prepare_images
reme_sensor_track_position
reme_sensor_update_volume
reme_surface_generate
为了优化,我的想法是如果我可以创建一个包含所有上述函数的新DLL,调用和此DLL导入函数将从unity(c#)每次更新调用一次,或者可以只调用一次并从回调中获取数据。
我只是使用下面的代码来检查我是否能够让它工作,不幸的是我得到了LNK2019:
RemeDLL.obj : error LNK2019: unresolved external symbol __imp_reme_context_create referenced in function “private: void __cdecl RemeDLL::StartScan(void)” (?StartScan@RemeDLL@@AEAAXXZ)
1>c:\Projects\RemeDLL\x64\Debug\RemeDLL.dll : fatal error LNK1120: 1 unresolved externals
#include <iostream>
#include <reconstructmesdk/reme.h>
using namespace std;
class RemeDLL
{
__declspec(dllexport) void StartScan()
{
// Create a new context
reme_context_t context;
reme_context_create(&context);
//...
}
};
以下是SDK中的定义:
typedef struct _reme_context* reme_context_t;
LIBRECONSTRUCTMESDK_LIBRARY_INTERFACE
reme_error_t reme_context_create(reme_context_t *c);
#define LIBRECONSTRUCTMESDK_LIBRARY_INTERFACE __declspec(dllimport)
有人可以建议或指点我该如何解决这个问题?我需要某种层来连接dll首先导入然后再调用dll导出函数,请指教。谢谢。
答案 0 :(得分:-1)
inc
和lib
文件夹的路径添加到项目属性中; #pragma comment(lib, "LibReconstructMeSDK.lib")
。