2011-06-20 93 views
1

我有包括2個項目的解決方案:類型引用錯誤

  • 公用事業 - 這個項目包含鍵入MyMatlab和引用一個COM(TLP)參考

  • LBM - 該項目包含功能displayMyMatlab,該功能使用Utilities項目中的MyMatlab類型,因此該項目引用Utilities

我創建了一個fsx文件,其中包含:

#r @".\bin\Release\LBM.dll" 
#r @".\bin\Release\Utilities.dll" 
LBM.displayMyMatlab() 

,我得到以下錯誤:

Microsoft (R) F# 2.0 Interactive build 4.0.30319.1 
Copyright (c) Microsoft Corporation. All Rights Reserved. 

For help type #help;; 

> 

--> Referenced 'D:\Olda\Bak\Projects\LBM\OldaConsortium\bin\Release\LBM.dll' 


--> Referenced 'D:\Olda\Bak\Projects\LBM\OldaConsortium\bin\Release\Utilities.dll' 



Lars_Slump_Post.fsx(45,21): error FS0074: The type referenced through 'Utilities.Matlab' is defined in an assembly that is not referenced. You must add a reference to assembly 'Utilities'. 
> 

是什麼意思?當我使用一個普通的編譯項目做同樣的工作時,它工作得很好。任何幫助感謝!

回答

1

托馬斯Petricek回答了類似的問題在這裏: Using COM DLLs with FSI

我猜你需要引用自己的dll之前引用生成的包裝DLL。生成的包裝通常在你的bin文件夾中被命名爲'Interop.LibName.dll'。

+2

@ Oldrich Svec - 您是否嘗試過反轉參考文獻,即先是Utilities,然後是LBM? –