2013-03-05 62 views
-1

這裏的情況:GET字符串中另一個DLL

我做了一個DLL與功能1裏面如下:在最後一行outVal指向dn.commonname

int function1(char *inVal, char *outVal) 
{ 
.... 
strcpy(outVal,dn.commonname.c_str()); 
} 

這是一個字符串。

我用LoadLibrary成功加載了另一個dll的dll。在第二個DLL我有:

int function1(string inval, string &outVal) 
{ 
    typedef int (WINAPI *func1Ptr)(char *, char *); 


     char outValPtr[128] = {0}; 
     int retVal = func1Lnk((char *)inVal.c_str(), outValPtr); 
     string outVal = outValPtr; 
} 

現在,我加載的dll第二在我的代碼,並呼籲fnuction1,但是當我檢查函數的第二個參數,我得到空。

任何人都可以對此有所瞭解嗎?

EDIT-1

我改變了我的代碼:

int function1(string inVal, string &outVal) 
{ 
    typedef int (WINAPI *func1Ptr)(char *, char *); 


     char outValPtr[128] = {0}; 
     int retVal = func1Lnk((char *)inVal.c_str(), outValPtr); 
     outVal = outValPtr; 
} 

但問題並沒有解決。任何線索?

+0

如果您發現答案有幫助,請點擊答案左邊的複選標記以表明您的接受。 – 2013-03-05 07:21:20

回答

3

您聲明一個局部變量陰影的說法:

string outVal = outValPtr; 

嗯,這是幾乎陰影的說法,因爲名字的拼寫是不同的。名爲outVal的變量與名爲outval的變量不同。 C++中的名稱與案例有關。

+0

那麼我應該如何將這個值傳遞給參數? – A23149577 2013-03-05 07:22:36

+0

我看到一個小寫字母v和一個大寫字母V,所以我不認爲他的確如此。但他並沒有將小寫字母V設置爲任何東西,所以基本上你是錯的,但仍然是正確的。 :) – 2013-03-05 07:23:57

+0

@Amir只分配給參數,你不需要局部變量。 – 2013-03-05 07:24:01

相關問題