看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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)