討論區快速選單
知識庫快速選單
政府補助!學嵌入式+物聯網 網路投保旅行平安險 討論區最近新進100則主題
[ 回上頁 ] [ 討論區發言規則 ]
寫個DLL import到Unity3D裡面(C#)
更改我的閱讀文章字型大小
作者 : ya8118(信宇)
[ 貼文 13 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 4 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/7/9 下午 06:17:54
目前DLL(C++):

標頭檔(.h) ===============================

#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#define DLLDIR __declspec(dllimport) // import DLL information
extern "C" {
DLLDIR int ADDFUN(int);
};

程式碼(.cpp) ===============================

#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include <iostream>
#include "DLL0709.h"

using namespace std;

int ADDFUN(int a){
return a+10;
}

Unity3D(.cs) ===============================

public static extern int ADDFUN(int a);
[DllImport("DLL0709")]

呼叫這個ADDFUN時就會錯誤。試過很多種網站的方法。不知道Unity3D裡面到底還有什麼特別的限制?

檔案都有放進去。(.dll & .lib)

其實我是想放我用OpenCV弄的手指辨識。所以想先弄一個小的DLL測試。

小弟我的程式基礎有點不是普通的菜。跪求各位有經驗的大大指點明路。
作者 : ozzy123(ozzy) VC++優秀好手資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4498 | 人氣 37262 | 評價 11100 | 評價/貼文 2.47 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/7/9 下午 07:49:00
will you post the error message ?
作者 : ya8118(信宇)
[ 貼文 13 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 4 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/7/9 下午 07:56:05
EntryPointNotFoundException: ADDFUN
OCF.Start () (at Assets/KinectScripts/OCF.cs:12)
作者 : ya8118(信宇)
[ 貼文 13 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 4 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/7/9 下午 08:01:58
上面這個是錯誤訊息,有將dll、lib檔 都放在 專案下,Asset Resources裡面也有放。

新的標頭檔 (.h) 的code: ==============================

#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
extern "C" _declspec(dllexport) int ADDFUN(int);
int _declspec(dllexport) ADDFUN(int a)
{
 int b = a+a;
 return b;
}

==============================================
Unity3D (OCF.cs):

using UnityEngine;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.IO;
using System.Text;

public class OCF:MonoBehaviour{
void Start () {
Debug.Log("ggg");
int q = OCF.ADDFUN(10);
//string w = q.ToString;
//SendMessage (w);
}

void Update () {

}
[DllImport("DLL0709.dll")]
public static extern int ADDFUN(int a);
}

=============================================

不過目前還是錯誤。還在爬文中。

我看有人附檔名是 .dll.bytes ,不知道跟不跟這個有關係,我改過 也是不行。
作者 : ozzy123(ozzy) VC++優秀好手資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4498 | 人氣 37262 | 評價 11100 | 評價/貼文 2.47 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人ya8118註記此篇回應為最佳解答 2014/7/9 下午 08:34:18
http://stackoverflow.com/questions/12892271/entrypointnotfoundexception-when-binding-c-dll-in-c-sharp
please refer to above post. the error comes from a binding exception . Beware of those declarations of the header !

check it out :-)
作者 : ozzy123(ozzy) VC++優秀好手資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4498 | 人氣 37262 | 評價 11100 | 評價/貼文 2.47 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/7/9 下午 08:49:41
http://stackoverflow.com/questions/18338389/system-entrypointnotfoundexception-when-calling-c-code-from-c-sharp

post relevant answer again
作者 : ozzy123(ozzy) VC++優秀好手資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4498 | 人氣 37262 | 評價 11100 | 評價/貼文 2.47 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人ya8118註記此篇回應為最佳解答 2014/7/9 下午 08:59:25
http://msdn.microsoft.com/zh-tw/library/system.entrypointnotfoundexception(v=vs.110).aspx

a more clear example about this exception
作者 : ya8118(信宇)
[ 貼文 13 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 4 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/7/10 下午 06:45:30
感謝ozzy大大的參考資料。我已經找出解決方法了。原來只是沒加上進入點而已。

PO上新程式碼給跟我有同樣問題的人參考。

Unity3D(C#)

[DllImport("DLL0709.dll",EntryPoint = "?ADDFUN@@YAHH@Z")]
public static extern int ADDFUN(int a);


在匯入的時候,後面的EntryPoint別忘記了加上了。至於他後面那一串我就看不懂了 哈哈。 thank
作者 : ozzy123(ozzy) VC++優秀好手資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4498 | 人氣 37262 | 評價 11100 | 評價/貼文 2.47 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/7/10 下午 07:31:28
http://blog.csdn.net/bzhxuexi/article/details/18231389


this is a VC++ compiler name managing rule e
作者 : ozzy123(ozzy) VC++優秀好手資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4498 | 人氣 37262 | 評價 11100 | 評價/貼文 2.47 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/7/11 下午 03:30:57
http://en.wikipedia.org/wiki/Name_mangling

wiki name mangling
作者 : ozzy123(ozzy) VC++優秀好手資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4498 | 人氣 37262 | 評價 11100 | 評價/貼文 2.47 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/7/11 下午 07:48:00
more detail about this issue , please see this article
http://www.kegel.com/mangle.html
作者 : ozzy123(ozzy) VC++優秀好手資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4498 | 人氣 37262 | 評價 11100 | 評價/貼文 2.47 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/7/11 下午 07:59:07
http://swaywang.blogspot.tw/2011/10/cname-mangling.html

GCC name mangling rule
 板主 : 青衫 , Raymond
 > Visual C++ - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - Visual C++ - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
Visual C++
1 青衫 11070 
2 Raymond 10090 
3 Clier 7630 
4 小約翰 2500 
5 Cog 2030 
6 coco 1870 
7 aming 1410 
8 牧童哥 1400 
9 r2109 1380 
10 Akira 1350 
Visual C++
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2019 程式設計俱樂部 http://www.programmer-club.com.tw/
0.171875