※ 引述《chengcti (卡馬請出來面對!!)》之銘言:
: 標題: Re: [問題] VC++.net製作的DLL給BCB載入
: 時間: Tue Dec 4 20:48:46 2012
: Application 請加上
: CoCreateInstance() 在最開始的地方
: managed component call by unmanaged application
: REF:
: http://msdn.microsoft.com/zh-tw/library/zsfww439%28VS.90%29.aspx
: ※ 引述《tenboguang (業界標準)》之銘言:
: : 開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
: : VC++.net framework 2.0 win32 project BCB
: : 問題(Question):
: : 請教一下各位先進
: : 目前用VC++ win32 project製作DLL
: : 這DLL會去產生一個form 其中有用到.net元件
: : 然後在BCB裡面以LoadLibrary動態的方式去呼叫
: : 錯誤結果(Wrong Output):
: : 結果都會跑出一個錯誤
: : System.InvalidOperationException: DragDrop 登錄失敗。
: : ---> System.Threading.ThreadStateException:
: : 目前的執行緒必須先設為單一執行緒 Apartment (STA) 模式,
: : 才能進行 OLE 呼叫。請確認您的 Main 函式上已經標記有 STAThreadAttribute。
: : 想請教各位這該怎麼解決
: : 因為用VC++去呼叫都可以
: : 可是用BCB就都會跑出這個錯誤視窗
: --
: ※ 發信站: 批踢踢實業坊(ptt.cc)
: ◆ From: 114.44.244.117
: 推 tenboguang:謝謝 12/04 21:08
: → tenboguang:對了CoCreateInstance(這裡參數嗎); 12/04 21:09
: 推 tenboguang:請問是CoCreateInstance(clsid,....,(void**)&form1); 12/04 22:03
: → tenboguang:然後在去myDll::DllForm^ form1= gcnew DllForm(); 12/04 22:04
: → tenboguang: form1= gcnew DllForm(); 12/04 22:04
: → tenboguang: form1->show(); 12/04 22:05
: → tenboguang:myDll::DllForm^ form1這在最前面這樣嗎 12/04 22:06
不好意思再請問一下 所以用法是像下面這3行嗎
myDll::DllForm^ form1;
CoCreateInstance(clsid,....,(void**)&form1);
form1->show();
----------------------------------------------------
form1經過CoCreateInstance(...)之後就不用再gcnew了嗎
還有就是不管gcnew或一般new產生所的指標 CoCreateInstance函數都可以適用嗎
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 180.177.77.159
※ 編輯: tenboguang 來自: 180.177.77.159 (12/04 23:03)