亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 8927 | 回復(fù): 15
打印 上一主題 下一主題

請問我寫的DLL怎么看不到導(dǎo)出的函數(shù)呢?  關(guān)閉 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2010-06-17 13:43 |只看該作者 |倒序瀏覽
我創(chuàng)建了一個Func工程,下面是Func.cpp的代碼:

// Func.cpp : 定義 DLL 應(yīng)用程序的導(dǎo)出函數(shù)。
//

#include "stdafx.h"

extern   "C" int  WINAPI Add(int,int);

int WINAPI Add(int a, int b)
{
    return a+b;
}

dllmain.cpp的代碼:
// dllmain.cpp : 定義 DLL 應(yīng)用程序的入口點。
#include "stdafx.h"

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;
}


為什么只生成Func.dll,沒有Func.lib,并且用depends打開dll看不到Add這個函數(shù),里面都是空的。還請大家?guī)兔φ艺以颍x謝了!
PS:Add的函數(shù)必須是WINAPI類型的。

論壇徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52雙子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午馬
日期:2013-10-18 21:43:38
2 [報告]
發(fā)表于 2010-06-17 13:49 |只看該作者
用dllexport或者def文件等

論壇徽章:
0
3 [報告]
發(fā)表于 2010-06-17 13:55 |只看該作者
我創(chuàng)建了一個Func.def文件,內(nèi)容如下:

LIBRARY  Func   
EXPORTS   
        Add  

不過還是沒有效果呢~

論壇徽章:
0
4 [報告]
發(fā)表于 2010-06-17 14:06 |只看該作者
我改了一下代碼:
extern   "C" _declspec(dllexport)  int WINAPI Add(int,int);
這樣倒是也有Func.lib了,也能能看到dll的函數(shù)名稱了,不過是_Add@8這樣的,怎么樣才能變成ADD呢?

論壇徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52雙子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午馬
日期:2013-10-18 21:43:38
5 [報告]
發(fā)表于 2010-06-17 14:19 |只看該作者
link參數(shù)增加 /DEF:Func.def,用IDE編譯的,把def加到項目中一般就自動會加上這個參數(shù)。

不用def文件,增加link參數(shù) /EXPORT:Add

論壇徽章:
0
6 [報告]
發(fā)表于 2010-06-17 14:26 |只看該作者
找到原因了,從網(wǎng)上查了一下,VS2008、2005和VC6不同,需要自己制定以下,如下:

VS2005不一樣,需要指定DEF文件,方法如下:


例如:
把 sqlite3.def 添加到工程中.

選擇 工程 > 屬性中的鏈接器,然后找到"輸入"這一項. 在 "模塊定義文件" 中輸入  sqlite3.def

注意: 你需要在 Debug 和 Release 中都輸入該項才行.

論壇徽章:
0
7 [報告]
發(fā)表于 2010-06-17 14:28 |只看該作者
本帖最后由 一見穿心 于 2010-06-17 14:32 編輯

// Func.cpp : 定義 DLL 應(yīng)用程序的導(dǎo)出函數(shù)。
//

#include "stdafx.h"
//#include "Func.h"

extern   "C" __declspec(dllexport)  int WINAPI Add(int,int);

__declspec(dllexport) int WINAPI Add(int a, int b)
{
    return a+b;
}

奇怪?為什么這樣就不行呢?查資料說是可以的?+_+

還望高人指點。呵呵~我希望能把兩種方法都掌握了。呵呵~

論壇徽章:
0
8 [報告]
發(fā)表于 2010-06-17 14:35 |只看該作者
用extern "C"或者寫def文件

論壇徽章:
0
9 [報告]
發(fā)表于 2010-06-17 14:35 |只看該作者
不過貌似那個是vc的名字修飾

論壇徽章:
0
10 [報告]
發(fā)表于 2010-06-17 14:41 |只看該作者
我采用def的方法現(xiàn)在是成功了,但是用__declspec(dllexport) 還是不行,網(wǎng)上說def文件就等同于extern   "C" __declspec(dllexport) ,不知道為什么會這樣,繼續(xù)研究……
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP