Unity - 如何使用c ++ dll?

时间:2015-05-08 06:11:30

标签: c# android c++ dll unity3d

我有一个AR应用程序。我使用visual studio 2013创建了一个c ++ dll。我在我的AR应用程序中使用这个dll,如下所示:

**In private members region :**
[DllImport ("DllExample")]
private static extern int func(int x, int y);
.......

**In a C# function :** 
if (func((int)pos.x, (int)pos.y) == -1) {
    ...
}
else {              
    ...
}

我的团结应用程序可以很好地统一编辑器。我为Android构建这个应用程序。当我在Android设备上运行它时,它不起作用。

C ++ dll的内容:

// dllmain.cpp : Defines the entry point for the DLL application.
#include "stdafx.h"
#include <opencv2\core\core.hpp>
#include <opencv2\highgui\highgui.hpp>
#include <opencv2\imgproc\imgproc.hpp>        
#include <fstream>
#include <iostream>

extern "C" __declspec(dllexport) int func(int x, int y);

BOOL APIENTRY DllMain( HMODULE hModule,
                   DWORD  ul_reason_for_call,
                   LPVOID lpReserved
                 )
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
    break;
}
return TRUE;
}


__declspec(dllexport) int func(int x, int y)
{   
cv::RNG rng(12345);
cv::Mat image0, image, gray, mask;
int ffillMode = 1;
int loDiff = 20, upDiff = 20;
int connectivity = 4;
int isColor = true;
bool useMask = false;
int newMaskVal = 255;

return x;
}

在Unity C#文件中,如果我删除调用dll函数,应用程序在我的Android设备上运行正常。我使用免费的统一版本。如何在移动设备上使用c ++ dll?

2 个答案:

答案 0 :(得分:1)

您需要将dll文件放在Android插件文件夹中才能使用。 Android插件文件夹是资产/插件/ Android 。如果它没有退出就创建它。

修改  根据我的研究,Unity插件不适用于非专业人士。免费和专业版Unity 5均支持Unity插件。您需要更新到Unity 5.这里有一个link人使Unity支持Unity免费版插件。

答案 1 :(得分:0)

Android在Linux系统上运行 - DLL文件通常是为Windows编译的字节码。

来自here

的答案