システムwiki

libc.dylibはMac Excel 2016 VBAコードで見つかりません

Alejand 受付中 最終更新日:2021-01-17 23:20

私は以下のようにMac 2016のExcelのVBAコードのlibc.dylibの関数を宣言しています:

Private Declare PtrSafe Function System lib "Macintosh HD:usr:lib:libc.dylib"(byvalコマンド "文字列としてのコマンド)

コードを実行すると、次のエラーメッセージが表示されます.

ライブラリーlibc.dylibはフォルダ内にあります./psr/lib.

返信リスト(回答:7)

1 #
SteveTa
同じ問題16.20versionにロールバックすることで修正できるようになりました.しかし、私はそれをしたくありません.バグ修正に関するETAは?
2 #
MarkJFi 2

コロンの代わりにスラッシュを使ってフルパスを使用していると考える.例えば:

Private Prictare Ptrsafe関数popen64 lib "/usr/lib/libc.dylib" alias "popen"(byvalコマンド、文字列としてのbyvalモード)longptr

は、前に「libc.dylib」だけで元気に遭遇しました.おそらく彼らはサンドボックス化の仕組み(または他の)と今外部すべてがスラッシュパスを必要とする方法を変えました.

応答2# ->にスキップ
3 #
SteveTa
フルパスそれはとてもうまく機能しました. 提案をありがとう.あなたはそれが検索パスを使うだろうと思いますが、何でも.明示的な作品パスはこの状況で機能します.
応答3# ->にスキップ
4 #
MarkJFi

歓声.公平になるために、私は質問を読むことによって答えにつまずいた.

私はNetStatへのシェル呼び出しを介してインターネットの使用を読み取るルーチンを持っていました.検索やエラーメッセージを見て、「たぶん...」と幸運にもうまくいったと思いました.

応答2# ->にスキップ
5 #
Pr4d

ハイマーク、私はVBAに新しく、私は私のファイルにこのモジュールを持っていて、opと同じエラーを得ます.

Popenwith Popen64をIFとELSEの両方の最初の行に置き換える必要があるかどうかをお勧めしますか?

とlibc.dylib

のすべての出現にフルパスを追加する必要がある場合

#if Mac

#IF VBA7

Private Pristafe FunctionPopenlib "libc.dylib"(byvalコマンド "(文字列として、ByValモード)LongPtr

Private Declare PtrSafe関数pclose lib "libc.dylib"(longptrとしてbyvalファイル)

PRIVATE DECLARE PTRSAFE FUNCTION FREAD LIB "libc.dylib"(StringとしてのByVal OUTSTR、LongPtrとしてのバイバルサイズ、LongPtrとしてのバイバル項目、BYVALストリーム)長い

プライベート宣言PtrSafe関数feof lib "libc.dylib"(LongPtrとしてbyvalファイル)longptr

#else

Private Declare関数popenlib "libc.dylib"(文字列としてのbyvalコマンド、文字列としてのbyvalモード)

プライベート宣言関数pclose lib "libc.dylib"(byvc.dylib "(byvalファイル)長い

プライベート宣言関数FreeD lib "libc.dylib"(文字列としてのbyval outstr、byval size、long chyval item、byval item、byval stream cloval stream)長い

プライベート宣言関数feof lib "libc.dylib"(byvalファイル)長い

#

の場合end

#

の場合end
応答5# ->にスキップ
6 #
MarkJFi

いいえ、各行の「libc.dylib」を「/usr/lib/libc.dylib」に変更する必要があります-それがこの議論に関するものです.

しかしあなたが尋ねたので:

-私は私のversionpopen64を呼んでいます. プライベート宣言Ptrsafe関数

-"/usr/lib/libc.dylib"は直後に参照されているライブラリです lib(図のようにフルパス付き)

-そのライブラリのオリジナル関数"papen"エイリアスです.

私は常に別名を使用し、元の機能自体を決して使用しませんでした.ただし、元の関数を呼び出す場合は、述べられているように、ライブラリへの欠落しているルートパスを除いて、コマンドラインが正しくありません.

応答6# ->にスキップ
7 #
JAMESNE

DYLIBはVBA7.1の/usr/libにアクセスしなければなりませんか?

ユーザーディレクトリにインストールできます.たとえば、~/Library?

モハーベの下でExcel 2019でDylibを使用しようとしています.